PAT
liangsc94
渴望变得出色,强大
展开
-
PAT1010
这道题是最恶心的一道了,通过率也是最低的一个,只有0.08。是一个进制转换的问题,不过有几个坑需要注意下。第一是数字的位数是不多于10位数,但int不行,所以数据类型必须用long long类型来做。第二个就是进制radix是没有上限的,所以这里需要做好剪枝。用二分传送门#include #include #include using namespace std;typedef原创 2015-12-09 13:23:46 · 428 阅读 · 0 评论 -
PAT甲级1008
1008传送门这道题很简单,比编程之美上面的都简单,所以也没什么好说的。直接上代码就是#include using namespace std;const int UP=6,DOWN=4,KEEP=5;int main(int agrc,char **argv){ freopen("num.txt","r",stdin); int N,previous_layer,total原创 2015-12-06 09:32:09 · 671 阅读 · 0 评论 -
PAT甲级-1004
传送门题目大概意思是,求出一棵树中每一层叶子节点的数量,叶子节点即为没有任何子树的节点。我刚开始摸错门了,想着定义一个tuple类型,后来又想建一棵树,不过后来发现思路太繁琐了。到了网上查了以后,发现BFS就可以解决问题了。#include #include #include using std::string;using std::cin;using std::cout;usin原创 2015-12-04 20:55:45 · 1252 阅读 · 0 评论 -
PAT甲级1005
传送门这道题很简单的了,,也没什么好说的。#include #include #include using namespace std;map IntToString{ {0,"zero"}, {1,"one"}, {2,"two"}, {3,"three"}, {4,"four"}, {5,"five"},原创 2015-12-04 20:59:44 · 582 阅读 · 0 评论 -
PAT甲级1007
问题链接:http://www.patest.cn/contests/pat-a-practise/1007实际上就是最长公共子序列问题,不过问题有两个小坑需要注意下。特殊情况1:整个序列都是负数特殊情况2:最大公共子序列和不止有一个,这个时候也很简单,倒着来就行。看我代码就会明白#include using namespace std;class MSS{p原创 2015-12-04 22:32:11 · 1130 阅读 · 0 评论 -
PAT甲级1006
传送门这道两个sort就可以解决问题了,多亏了C++中string自带的比较函数。#include #include #include #include using namespace std;struct info{ string ID_number; string Sign_in_time; string Sign_out_time;};bool unlock(in原创 2015-12-04 21:02:05 · 628 阅读 · 0 评论 -
PAT甲级1003
传送门仔细分析一下,你就会发现这实际上是一道单源最短路径问题,不过有个小坑是路径可能不止一条,同时要注意这是一个无向图。我第一次弄成有向图了,可以用Dijksttra和DFS结合,可以破之。#include #include using namespace std;const int N=505;const int INF=2147483647;int num_nodes,nu原创 2015-12-03 19:28:19 · 1333 阅读 · 0 评论 -
PAT-甲级1002
传送门#include #include #include using namespace std;struct Polynomials{ int exponents; double coefficients; Polynomials(int exponents,double coefficients){ this->exponents=exponents;this->coe原创 2015-12-01 15:39:11 · 1243 阅读 · 0 评论 -
PAT甲级1001
传送门#include #include #include using namespace std;int main(int argc,char **argv){ int n,m,sum; vector ivec; scanf("%d%d",&n,&m); sum=n+m; string src=std::to_string(s原创 2015-11-29 22:44:42 · 1278 阅读 · 0 评论 -
PAT1001
传送门#include int main(int argc,char **argv){ unsigned int n; scanf("%d",&n); if(n==1){ printf("0\n"); return 0; } int count=0; while(n!=1){ if(n%2==0){ n>>=1; count++; } else{原创 2015-11-29 18:50:25 · 358 阅读 · 0 评论 -
PAT1003
传送门因为PAT上GCC的版本是4.7.5,所以不支持C++11的正则,就用Python写了#coding=utf-8import ren=int(input())index=0;L=[]while(index<n): string=input() L.append(string) index+=1for var in L: matchObj=re.match(r'(原创 2015-11-29 18:19:06 · 382 阅读 · 0 评论 -
PAT1013
传送门用DFS搜索一下,然后看需要搜几次,这一步可以得到有多少个独立的区域。设为N,则所需要的高速路数为N-1#include #include using namespace std;const int MAX=1001;int N,M,K;int edge[MAX][MAX];int concern[MAX];int visited[MAX];bool dfs(int原创 2015-12-13 12:46:14 · 519 阅读 · 0 评论 -
PAT1012
传送门这是一道结构体排序问题,只不过排序的条件有点特别,但是我们可以传一个谓词给函数。还有一个坑就是注意俩人排名相同的情况,比如有两人并列第一,实际上分数第二的人排名就是第三了。/* *********PAT1012***************** *********Author:markliang*********/#include #include #inc原创 2015-12-13 12:42:58 · 630 阅读 · 0 评论 -
PAT1011
这道题很简单,就不用说了。传送门#include #include #include using namespace std;const int N=3;map m={ {0,'W'}, {1,'T'}, {2,'L'}};struct valAndIndex{ double val; int index;};int main(int argc,char *原创 2015-12-09 13:25:44 · 495 阅读 · 0 评论 -
PAT甲级1009
传送门这道题换成了多成了多项式的相乘,因为指数最大是1000,所以相乘后指数最大值为2000。题目中内存限制为65536KB,所以2000X4/1024是不会超出内存限制的。#include #include #include using namespace std;const int MAX=2001;double array[MAX];double result[MAX];原创 2015-12-06 09:35:55 · 755 阅读 · 0 评论