当前位置: 首页 > 编程日记 > 正文

PAT (Advanced Level) 1132~1135:1132 模拟 1133模拟(易超时!) 1134图 1135红黑树

1132 Cut Integer(20 分)

题意:将一个含K(K为偶数)个数字的整数Z割分为A和B两部分,若Z能被A*B整除,则输出Yes,否则输出No。

分析:当A*B为0的时候,不能被Z整除,输出No。否则会出现浮点错误。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<algorithm>
#include<map>
#include<iostream>
#include<vector>
#include<set>
#include<cmath>
using namespace std;
char s[20];
int main(){int N;scanf("%d", &N);while(N--){scanf("%s", s);int len = strlen(s);int A = 0;for(int i = 0; i < len / 2; ++i){A = A * 10 + s[i] - '0';}int B = 0;for(int i = len / 2; i < len; ++i){B = B * 10 + s[i] - '0';}int C = A * B;if(C == 0){printf("No\n");continue;}int x = atoi(s);if(x % C == 0) printf("Yes\n");else printf("No\n");}return 0;
}

1133 Splitting A Linked List(25 分)

题意:给定一个链表,将链表重新排序,在不打乱原链表相对顺序的前提下,小于0的在最前面,其次是0~K,最后是大于K的数。

分析:

1、3次遍历可实现链表重排。

2、map映射value和pre或suc的关系会超时,所以,以pre为结点定义结构体,组织链表的重排,从而进行优化。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<algorithm>
#include<map>
#include<iostream>
#include<vector>
#include<set>
#include<cmath>
using namespace std;
const int MAXN = 100000 + 10;
struct Node{int pre, value, suc;
}num[MAXN];
vector<int> old, ans;
int main(){int N, K, head, pre, value, suc;scanf("%d%d%d", &head, &N, &K);for(int i = 0; i < N; ++i){scanf("%d%d%d", &pre, &value, &suc);num[pre].pre = pre;num[pre].value = value;num[pre].suc = suc;}while(head != -1){old.push_back(head);head = num[head].suc;}int len = old.size();for(int i = 0; i < len; ++i){if(num[old[i]].value < 0) ans.push_back(old[i]);}for(int i = 0; i < len; ++i){if(num[old[i]].value >= 0 && num[old[i]].value <= K) ans.push_back(old[i]);}for(int i = 0; i < len; ++i){if(num[old[i]].value > K) ans.push_back(old[i]);}for(int i = 0; i < len - 1; ++i){printf("%05d %d %05d\n", ans[i], num[ans[i]].value, ans[i + 1]);}printf("%05d %d -1\n", ans[len - 1], num[ans[len - 1]].value);return 0;
}
1134 Vertex Cover(25 分)

题意:vertex cover是指图中一些点的集合,使得图中每一条边的两个点中都至少有一个点在该点集中。给定点的集合,判断是否为vertex cover。

分析:按题意模拟即可。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<algorithm>
#include<map>
#include<iostream>
#include<vector>
#include<set>
#include<cmath>
using namespace std;
const int MAXN = 10000 + 10;
int N, M;
bool vis[MAXN];
struct Edge{int u, v;void read(){scanf("%d%d", &u, &v);}
}num[MAXN];
int main(){scanf("%d%d", &N, &M);for(int i = 0; i < M; ++i){num[i].read();}int K;scanf("%d", &K);while(K--){int n, x;scanf("%d", &n);memset(vis, false, sizeof vis);while(n--){scanf("%d", &x);vis[x] = true;}bool ok = true;for(int i = 0; i < M; ++i){if(vis[num[i].u] || vis[num[i].v]) continue;ok = false;break;}if(ok) printf("Yes\n");else printf("No\n");}return 0;
}

1135 Is It A Red-Black Tree(30 分

题意:给定一棵二叉搜索树的前序遍历序列,判断其是否为一棵红黑树。

分析:

1、红黑树是一棵平衡的二叉搜索树,满足以下条件:

(1)所有结点不是红色就是黑色;

(2)根结点是黑色;

(3)每一个为NULL的叶子结点是黑色;

(4)如果某结点是红色,其左右子结点都是黑色;

(5)对于每个结点,其到所有后代叶子结点经过的黑色结点数相同;

2、根据给定的前序遍历序列,结合二叉搜索树的定义可以建树。

3、递归检查条件4。

4、同理,递归统计左右子树的黑色结点数,来检查条件5。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<algorithm>
#include<map>
#include<iostream>
#include<vector>
#include<set>
#include<cmath>
using namespace std;
const int MAXN = 30 + 10;
struct Node{Node *left, *right;int value;
};
struct Node *root;
bool ok;
void build(Node* &r, int x){if(r == NULL){r = (Node*)malloc(sizeof(Node));r -> value = x;r -> left = r -> right = NULL;return;}if(abs(x) < abs(r -> value)){build(r -> left, x);}else{build(r -> right, x);}
}
void judge_RedNode(Node* r){if(!ok) return;if(r -> left != NULL){if(r -> value < 0 && r -> left -> value < 0){ok = false;return;}else judge_RedNode(r -> left);}if(r -> right != NULL){if(r -> value < 0 && r -> right -> value < 0){ok = false;return;}else judge_RedNode(r -> right);}
}
int judge_BlackNode(Node* r){int leftcnt, rightcnt;if(!ok) return -1;if(r == NULL) return 1;leftcnt = judge_BlackNode(r -> left);rightcnt = judge_BlackNode(r -> right);if(leftcnt != rightcnt){ok = false;return -1;}else{if(r -> value > 0) ++leftcnt;}return leftcnt;
}
int main(){int K;scanf("%d", &K);while(K--){root = NULL;int N, x;scanf("%d", &N);while(N--){scanf("%d", &x);build(root, x);}ok = true;judge_RedNode(root);judge_BlackNode(root);if(root -> value < 0 || !ok){printf("No\n");}else{printf("Yes\n");}}return 0;
}

转载于:https://www.cnblogs.com/tyty-Somnuspoppy/p/9560759.html

相关文章:

poj 1523(无向联通图的割点)

结合tarjan算法思想&#xff0c;这题终于写了出来。 同样用dfs将图变成为一颗树&#xff0c;这样可以提供许多有用的性质。 对于一个无向连通图&#xff0c;dfs后的树为只有回边&#xff08;回边Euv,v是u的祖先&#xff09;和生成树的边的图。 那么在遍历到一个点u的时候&#…

IPC--信号量

信号量概念理解 信号量本质上 是一个计数器&#xff0c;用来统计临界资源申请资源的个数。其中的二元信号量的 值是0或者是1&#xff0c;即是要么是有&#xff0c;要么是无。信号量本身也是临界资源&#xff0c;所以一定要保证其原子性。信号量的工作原理&#xff1a;两个进程…

7 自动开启网卡_淘汰的旧手机别扔掉,这样设置变身4G上网卡

很多人都用过usb无线上网卡&#xff0c;把手机SIM卡插到上网的卡槽内&#xff0c;然后把usb上网卡插到电脑usb口&#xff0c;电脑安装好驱动程序后&#xff0c;即可畅游网络世界。当初3G上网卡价格不菲&#xff0c;随着更新换代4G快要过去&#xff0c;5G开始试商用&#xff0c;…

Struts2 的stream result用法

2019独角兽企业重金招聘Python工程师标准>>> <action name"download" class"com.unmi.action.DownloadAction"> <result name"success" type"stream"><!--type 为 stream 应用 StreamResult 处理-->…

Largest Rectangle in a Histogram

ps&#xff1a;单调栈&#xff0c;注意红色部分的代码。 int n;stack<P> s;inline void upd(LL &x, LL y) { (x < y) && (x y); }int main() {while(sc(n) ! EOF && n) {while(!s.empty()) s.pop();LL ans 0;Rep(i, 1, n) {int x;sc(x);if (s.e…

IPC--共享内存

有了之前的学习经验&#xff0c;共享内存对我们学习起来相对简单一些了&#xff0c;这里简单说说共享内存的一些&#xff0c;然后对于函数的分析直接在代码里面的注释部分有说明&#xff0c;如果还是不懂&#xff0c;可以先看看前面的关于IPC–信号量还有IPC–消息队列的讲解 …

2020年行政区划代码_2020年柳州市行政区划,了解柳州市有几个区,详细数据

本文通过整理了柳州市行政区划代码数据及柳州市统计用的城乡划分代码&#xff0c;带你了解柳州市有几个区、县及下面的街道和镇划分详细情况。柳州市有几个区、县、县级市&#xff1f;答&#xff1a;柳州市有5个区、5个县(行政区划2020年7月)。分别为&#xff1a;城中区、鱼峰区…

sql2000 转sql2008

1&#xff0c;在sql2008服务器上新建空数据库&#xff0c;与sql2000同名&#xff0c;当然可以不同名。 2&#xff0c;在sql2008服务器上选择数据库&#xff0c;点右键&#xff0c;任务-导入数据。打开导入数据向导。 3&#xff0c;点击下一步&#xff0c;选择数据源。数据源可以…

linux下查看网卡型号

查看网卡型号[rootcentos /]# lspci | grep Ethernet02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)我这里型号是79c970,驱动pcnet32.查看驱动信息[rootcentos /]# modinfo pcnet32filename: /lib/modules/2.6.18-194.el5/…

linux_域名映射

vi /etc/hosts在最后加上ip及映射的域名192.168.229.111 node001192.168.229.112 node002192.168.229.113 node003 转载于:https://www.cnblogs.com/lxyuuuuu/p/9578659.html

地址解析协议ARP

设计需求 ARP协议解决的问题就是&#xff1a;在同一个局域网中&#xff0c;解决主机IP地址和硬件地址的映射问题 基本使用原理 当数据在网络中某一条链路传输的时候我们知道目的主机的IP地址&#xff0c;但是不知道硬件地址&#xff0c;ARP协议就是解决这个问题的一个协议&a…

ie8加载js太慢_js ie8 慢

Re请教ap6214f2r版主一些问题引用第2楼ap6214f2r于2012-09-10 14:08发表的 :楼主&#xff0c;关于你说的慢&#xff0c;我去看了下你网站响应速度非常快[attachment26863]这个请求是计算签名&#xff0c;跳转到OSS的。.......老大&#xff0c;我刚才试了一下&#xff0c;不是线…

LINQ : IEnumerableT and IQueryableT区别

本地数据源计算机会自动使用IEnumberable<T>,远程数据源会使用IQueryable<T> 下面这条语句没有使用数据库里的EF数据&#xff0c;显示如下&#xff1a; 下面这条语句使用数据库里的EF数据&#xff0c;显示如下&#xff1a; 针对Linq “LINQ TO to OBJECTS”&#…

九大网络安全失误,需要注意

在我们的职业生涯中大都曾经有过一次这样的经历——我是说你认为足以让你丢掉饭碗的失误。我的第一次重大失误是曾经重启了校园里的所有路由器&#xff0c;不是一个接一个的&#xff0c;而是所有一次完成。我写了一个脚本&#xff0c;为所有的路由器安装一个安全更新&#xff0…

python学习笔记——Thread常用方法

http://blog.sina.com.cn/s/blog_4b5039210100ewie.html Thread对象中的一些方法&#xff1a; 以前说过多线程&#xff0c;用到threading模块中的Thread对象&#xff0c;其中的start和run方法比较熟悉了&#xff0c;start&#xff08;&#xff09;是重载了Thread对象中的run方法…

常见的路由选择算法

一、路由表 所谓路由表&#xff0c;指的是路由器或者其他互联网网络设备上存储的表&#xff0c;该表中存有到达特定网络终端的路径&#xff0c;在某些情况下&#xff0c;还有一些与这些路径相关的度量。 二、常见路由表生成算法 路由算法是提高路由协议功能&#xff0c;尽量…

linux 远程挂载摄像头_基于Linux的嵌入式网络摄像机设计

本嵌入式网络摄像机采用高性能ARM9芯片微处理器&#xff0c;内置嵌入式Web服务器。通过嵌入式多任务操作系统采集摄像机视频数据&#xff1b;采集的视频信号数字化后经MJPEG算法压缩&#xff0c;再通过内部总线送到内置的Web服务器&#xff1b;使用者可以直接用浏览器观看Web服…

2012 ARM嵌入式开发应用研讨会杂谈

记得以前参加的ARM的研讨会&#xff0c;名称是技术研讨会&#xff0c;不知道为什么现在改名为嵌入式开发应用研讨会了。不过今年演讲的重点就是 ARM DS-5开发工具&#xff08;还免费发放了一本《Linux/Android开发利器 ARM DS-5使用指南》书籍&#xff09;&#xff0c;也许这就…

打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )

此文章参考《深入理解计算机系统》P31。 先看如下代码&#xff1a; 12345的十六进制表示为&#xff1a;0x00003039 1 #include <stdio.h>2 3 int main()4 {5 int a 12345;6 char *q (char *)(&a);7 for(int i 0; i < sizeof(a); i)8 prin…

NAT技术和代理服务器

一、代理服务器 所谓“代理”&#xff0c;就是代而劳之的意思。代理服务器就是代理网络用户去取得网络信息&#xff0c;形象的说&#xff1a;它是网络信息的中转站&#xff0c;使得一个网络终端和另一个网络终端不直接进行相连&#xff0c;代理网络用户去取得信息。主要工作在O…

链接全局变量再说BSS段的清理

废话就不多说了&#xff0c;开始。。。 再说BSS段的清算 以前遇到一个裸机程序不能改变全局变量值的问题&#xff0c;最后模模糊糊处理了&#xff1a;手动添加了一个链接脚本&#xff0c;清算了BSS段。问题得以处理&#xff0c;就认定是BSS段清算的问题&#xff0c;全局变量在B…

ios启动页尺寸_关于移动端App启动页的策划方案

App启动页是指app在启东时需要加载必要的运行环境和配置&#xff0c;在这个过程中提示用户等待的一个过渡页面。在产品经理眼里启动页是app给予用户重要的第一印象&#xff1b;也是App最重要的黄金页面之一&#xff0c;所有用户100%都会看到的页面。启动页适合用来做以下几个事…

事件流--事件冒泡现象及阻止

事件冒泡现象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>事件冒泡现象</title><style>div{padding: 50px;}#div1{background: red;}#div2{background: blue;}#div3{background: yell…

谁知道静态成员的纠结心境

我们在实际开发的过程中&#xff0c;可能需要某些类的成员变量并不是针对每一个对象的&#xff0c;而是针对每一个类而言的&#xff0c;比如在银行中有一个利率数据&#xff0c;我们希望的是&#xff0c;当一个利率改变的时候&#xff0c;所有的对象都能够看到这个改变的数据&a…

.net ConfigurationSectionDesigner插件使用

最近接触了vs2010的一款插件&#xff1a;ConfigurationSectionDesigner。ConfigurationSectionDesigner是一个图型化设计.net的配置块和自动生成需要代码和schema定义的codeplex上的一个开源项目&#xff0c;现在分享出来&#xff0c;希望对大家有所帮助。 .Net配置体系中可以是…

对应到对象 数据库驼峰_【GI的自主空间数据库】一种竞争力,叫技术引领;一种竞争力,叫时间沉淀...

引子&#xff1a;GI的自主空间数据库及GIS框架来自于求学时MAPGIS的引导&#xff0c;工作时ARCGIS的追随&#xff0c;读博时IBM和Microsoft2篇文献...。即使在大数据技术发展的今天&#xff0c;自主空间数据库存储仍然有其技术优势&#xff0c;近20年的时间沉淀&#xff0c;是G…

TSM备份Windows数据

一、备份数据 1.使用备份勾当客户端&#xff0c;可以在原始文件出现损坏的时候&#xff0c;恢复备份版本。TSM提供备份和恢复文档的类型包括:FAT&#xff0c;NTFS和FAT32.2.合适备份和合适归档文件当备份-归档客户端备份或归档一个文件&#xff0c;他会发送一份文档的副本和它的…

GM Tech 2 works with Hummer Yes or No

This is about GM Tech 2 scan tool for Hummer troubleshooting and programming. Can I have a cheap Tech 2 for Hummer? Yep. Both the original and HQ clone can work for your car. Where can I get a working clone at a good price? https://www.obd2tool.com/goods…

程序的编译和链接过程

一.虚拟机、linux简介简单介绍一下虚拟机还有就是各种操作系统&#xff0c;比如centos&#xff0c;Ubuntu操作系统&#xff1a;linux&#xff08;centos、Ubuntu、redhat&#xff09;&#xff0c;Android&#xff0c;Windows&#xff08;xp、win8、win10&#xff09;进程&#…

Nosql网络阅读

#1 Node.jsmongodb 开源项目 https://github.com/DoubleSpout/wujb  作者博客:http://snoopyxdy.blog.163.com/blog/static/60117440201261844125973/ #1 关系数据库还是NoSQL数据库 NoSQL的分类 NoSQL仅仅是一个概念&#xff0c;NoSQL数据库根据数据的存储模型和特点分为很多…