浙大PAT (Advanced Level)
天岚锦辰
还没有定方向的研究生
展开
-
PAT 1027
水题,10进制转13进制,注意0的情况#include #include #include #include using namespace std; #define MAX 2005 int main() { int R, G, B,p; char a[10],b[10],c[10]; scanf("%d %d %d", &R, &G, &B); int cnt = 0; printf原创 2017-02-27 19:11:23 · 174 阅读 · 0 评论 -
PAT 1002
水题#include #include int main() { int k, i, p,num; double a[1005] = {0}, q; scanf("%d", &k); for (i = 0; i < k; i++) { scanf("%d", &p); scanf("%lf", &q); a[p] += q; } scanf("原创 2017-02-26 13:51:04 · 147 阅读 · 0 评论 -
PAT 1008
题意:电梯升降,上升6秒每层,下降4秒每层,每次停下都需要留5秒 坑点:连续出现两次同样的层数需要再停留5秒#include #include #include #include using namespace std; int main() { int N,a[105]; scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%原创 2017-02-26 14:06:09 · 293 阅读 · 0 评论 -
PAT 1009
水题 题意:两个多项式相乘,输出系数和次数 坑点:题目中说规模最大1000,开1005数组过不去,开10005数组大小就可以过了,真是奇了 #include #include #include #include using namespace std; double a[10005], b[10005], c[10005]; int init() { for (int i = 0; i原创 2017-02-26 14:48:09 · 272 阅读 · 0 评论 -
PAT 1011
水题#include #include #include #include using namespace std; struct FIFA { double W, T, L; char flag; double max; }a[1005]; int main() { double max; for (int i = 0; i < 3; i++) { scanf("%lf %lf原创 2017-02-26 15:05:50 · 152 阅读 · 0 评论 -
PAT 1029
题意:给两串数字,合并求出中位数 思路:直接存为一个数组然后进行快排,最后取中间值#include #include #include #include using namespace std; long long a[2000005]; int main() { int n; int i, j; scanf("%d", &n); for (i = 0; i < n; i++) {原创 2017-02-26 21:56:35 · 477 阅读 · 0 评论 -
PAT 1128
N皇后问题:每输入一个位置就把所有不能摆放的位置全部置为1,如果之后填入的皇后标记是1的话就说明不成立,若判到最后一棵棋子依旧不是1,则成立 #include #include #include #include #include #include #include #include #include #include using namespace std; const int N = 405原创 2017-03-19 09:46:21 · 302 阅读 · 0 评论 -
PAT 1012
思路:根据每门课程优先级高低进行排序,平均分直接计入rank,剩下的记为nowrank,如果排序结果的排名要比之前一个要高则进行替换. 有更简单的办法,方法还是略复杂而且因为思路略为混乱总是有2个小样例过不去,还好最后过了 代码:#include #include #include #include using namespace std; #define MAX 2005 struct Ba原创 2017-02-27 14:57:12 · 207 阅读 · 0 评论 -
PAT 1015
思路:进制转换和质数判断 #include #include #include #include using namespace std; #define MAX 2005 int isprime(int n) { if (n == 0 || n == 1) return 0; for (int i = 2; i*i <= n; i++) { if (n % i == 0) {原创 2017-02-27 15:45:38 · 152 阅读 · 0 评论 -
PAT 1124
水题,按条件判一下,考的时候不是这么写的,更简练一些,这题也可以用vector或者map写,更加精练一些 #include #include #include using namespace std; int main() { string str[5005], fz[5005]; int n, m, k, s, i, j; scanf("%d %d %d", &m, &n, &s);原创 2017-03-07 14:10:18 · 183 阅读 · 0 评论 -
PAT 1125
第二题很多人都说是赫夫曼树,我就排了个序就过了,时候推敲了一下逻辑是可行的,有兴趣的同学可以用赫夫曼树做一下 #include #include #include #include using namespace std; int main(){ int n, i; double s[10005], len = 0; scanf("%d", &n); for (i = 0; i < n原创 2017-03-07 14:11:39 · 183 阅读 · 0 评论 -
PAT 1104
自己写一下找一下规律,注意都是连着的,一开始没看清题意还以为是排列组合。 #include #include #include #include #include #include using namespace std; #define N 100005 int i, j, k, n; int main() { vectora; double k; scanf("%d", &n); f原创 2017-03-13 09:40:41 · 407 阅读 · 0 评论 -
PAT 1126
题意:告诉你欧拉电路和欧拉环的定义然后给你一个图问你他是不是欧拉回路。 #include #include #include #include #include #include using namespace std; #define N 100005 int i, j, k, n; vector >v; vectorvisit; int cnt = 0; void dfs(int i原创 2017-03-13 13:31:00 · 220 阅读 · 0 评论 -
PAT 1127
题意很简单:中后序建树,然后按Z字形输出 #include #include #include #include #include #include #include using namespace std; #define N 100005 struct Node { Node *lchild,*rchild; int c; }; int post[30], in[30]; Node *原创 2017-03-13 15:21:03 · 302 阅读 · 0 评论 -
PAT 1120
水题,把数字逐位相加,得出所有不重复的和、#include #include #include #include #include #include #include #include using namespace std; #define N 100005 int main() { sets; int n, i,j; string str[N]; scanf("%d", &n);原创 2017-03-13 16:59:43 · 225 阅读 · 0 评论 -
PAT 1116
这题一开始想复杂了,导致2个样例超时,其实只要利用数组存储就可以了,每个数字都有一个对应的状态,1表示第一,2表示素数,3表示有奖,-1表示check过了,0表示没有这个人,然后在输入的时候处理好,输出判断就行了。 #include #include #include #include #include #include #include #include using namespace std原创 2017-03-13 20:34:54 · 316 阅读 · 0 评论 -
PAT 1121
其实我也不知道我写的啥...... 数组开的有点多,先开了mp数组存夫妻,然后开了一个数组存参加party的人(将其编号标记),再开了一个数组按顺序存参加party的人,然后判断,如果是单身狗的话则存入最终数组...实在是复杂 下面贴了一个大佬的比较短的. #include #include #include #include #include #include #include #incl原创 2017-03-13 21:53:43 · 282 阅读 · 0 评论 -
PAT 1122
这题莫名其妙,判定在main函数里总是有个样例过不去,写到judge函数中就可以全过了 题目大意:给出一副无向图,有K个询问,每个询问包含n个点,判断这n个点组成的序列是否符合哈密顿回路。 哈密顿回路:包含图中所有节点的一条简单回路(首尾节点相同,且每个顶点只出现一次)。 解题思路:对于每个询问,判断是否符合。出现以下情况就是不符合: 1、首尾节点不原创 2017-03-14 10:26:02 · 291 阅读 · 0 评论 -
PAT 1001
水题#include int main() { int a,b; int sum; while(scanf("%d%d\n",&a,&b) != EOF){ sum = a+b; if(sum < 0){ printf("-"); sum = -sum; } if(sum>=1000000){ printf("%d,%03d,%0原创 2017-02-26 13:50:07 · 277 阅读 · 0 评论 -
PAT 1006
题意:输出谁是开门的谁是锁门的。 思路:模拟,数字比大小或者直接将时间存为字符串直接比较大小。 代码:#include #include #include #include using namespace std; struct door { char name[105]; int begin_hour,begin_minute,begin_second,end_hour,end_minu原创 2017-02-25 16:50:37 · 196 阅读 · 0 评论 -
PAT 1005
题意:输入一个小于等于100位的数字,累计各位之和,然后用英文逐位表示,两个单词之间空一格 思路:水题 代码: #include #include int putnumber(int n) { switch (n) { case 0:printf("zero"); break; case 1:printf("one"); break; case 2:printf("two"原创 2017-02-25 16:18:56 · 186 阅读 · 0 评论 -
PAT 1028
题意很简单,坑点在于用string和cin,cout来输入输出最后一个测试点会超时过不去,故采用C语言的方式用strcmp进行比较。 #include #include #include #include using namespace std; #define MAX 100005 struct Student { char ID[7]; char name[9]; int score;原创 2017-02-27 19:53:34 · 456 阅读 · 0 评论 -
PAT 1031
按格式输出,注意条件#include #include #include #include using namespace std; #define MAX 100005 int main() { char str[MAX]; scanf("%s", str); int len = strlen(str); int n1, n2, n3; if (len % 3 == 0) n1原创 2017-02-27 20:38:02 · 253 阅读 · 0 评论 -
PAT 1100
水题,当年考的时候用模拟的办法就没拿全分,结果现在做依然拿不了全分,所以改用了map,总算是AC了.代码依旧很长不精简,不过思路比较清晰. #include #include #include #include #include #include using namespace std; string mon[13] = { "tret", "jan", "feb", "mar",原创 2017-02-28 11:37:18 · 291 阅读 · 0 评论 -
PAT 1101
此题有毒,当时直接进行遍历分数没拿满,参考了一下菊苣的做法只要把当前最大和最小的遍历出来然后比最大的大比最小的小就可以出结果了,还有一个坑点就是第三个样例必须输出\n才可以拿到分数,ACM做多的人习惯性会加\n,PAT做多了就懒得加了,下附代码(有一定参考性) #include #include #include #include #include #include #include原创 2017-02-28 14:07:00 · 294 阅读 · 0 评论 -
PAT 1019
水题,按位取余判是否是回文串(ps:一开始还以为是进制转化,感觉10的9次方的进制转化要gg,仔细读题发现很水,所以读题要仔细) #include #include #include #include #include #include #include using namespace std; #define MAX 100005 #define INF 0x3f3f3f3f in原创 2017-02-28 15:52:58 · 222 阅读 · 0 评论 -
PAT 1035
题意:给你N串密码,问可不可以按照他给定的方法进行加密,若部分或全部可以则输出所有可以加密的密码串,若全部不可以则输出密码串的个数,1个和多个输出是有单复数的. #include #include #include #include #include #include #include using namespace std; #define MAX 1005 #define INF原创 2017-02-28 16:34:14 · 289 阅读 · 0 评论 -
PAT 1041
题意:输出第一个没有重复过的数字 #include #include #include #include #include #include #include #include using namespace std; #define MAX 1000005 #define INF 0x3f3f3f3f int n, a[MAX], b[MAX], i, j; int main()原创 2017-02-28 18:23:30 · 213 阅读 · 0 评论 -
PAT 1042
这题做的有点麻烦,因为脑子一直抽风,整体思路是直接开了个结构体存洗牌顺序,然后直接快排n次输出就好了,很简单的一道题目脑子卡住好几次.#include #include #include #include #include #include #include #include using namespace std; #define MAX 55 #define INF 0x3f3f3原创 2017-02-28 20:52:46 · 185 阅读 · 0 评论 -
PAT 1007
和hdu 1003思路整体一致,就是少了一些格式内容,简单dp,最大子序列和.状态转移方程式是dp[i]=max(dp[i]+a[i],dp[i]) #include #include #include #include #include #include #include #include using namespace std; #define MAX 10000+5 #defi原创 2017-03-01 13:33:55 · 225 阅读 · 0 评论 -
PAT 1102
题意:给你N个结点,然后输入N行,每行代表当前第i个结点,每个结点有左右孩子,然后将其反转后,进行层序遍历和中序遍历,层序遍历相当于BFS,中序相当于DFS.下面给出两种做法,第二种是纯数据结构做法,参考大神的,第一种相对比较好理解一些。 #include #include #include #include #include #include #include #include #i原创 2017-03-02 20:19:54 · 255 阅读 · 0 评论 -
PAT 1108
简单模拟,求合法的数的平均值,坑点在3. 2.这样的数也是合法的,还有就是输出的时候number注意单复数,0是复数,代码略复杂仅供参考 #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAX 5原创 2017-03-03 13:33:52 · 201 阅读 · 0 评论 -
PAT 1109
模拟题,题意是给你n个人的名字和身高,将其排成k行,然后最高的站中间,每个人左边比右边身高高,然后将其输出 #include #include #include #include #include #include #include using namespace std; struct Team { string name; int high; }s[10005]; int cmp(co原创 2017-03-03 13:42:03 · 193 阅读 · 0 评论 -
PAT 1110
PAT 1102的变形,注意1110需要支持2位数操作,层序遍历的时候检查中间是否有缺漏结点就可以了 #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAX 20000+5 #define INF原创 2017-03-03 14:01:23 · 261 阅读 · 0 评论 -
PAT 1112
如果前后都是出现连续n次按键则是坏键 #include #include #include #include #include #include using namespace std; int n, i, j; char str[10005]; int flag[10005]; int main() { scanf("%d %s", &n, str); for (i = 0, j原创 2017-03-03 15:28:25 · 278 阅读 · 0 评论 -
PAT 1113
超级水题,sort排序,中间断开,加起来减一下就好了 #include #include #include #include #include #include using namespace std; int main() { int n; long long a[100005]; scanf("%d", &n); for (int i = 0; i < n; i++) {原创 2017-03-03 15:53:23 · 311 阅读 · 0 评论 -
PAT 1023
题意:输入一串数字,将其翻倍,问翻倍后的数字是否与原来一样。 思路:按位*2并进位,设置进位标志,若最后首位需要进位则为1,然后将数字个数统计并进行比较,相同输出Yes,否则输出No,最后输出翻倍后的数字,进位位为1则输出,否则不输出。 代码: #include #include int add(int n) { return 1 << n; } int main() { char d原创 2017-02-24 23:34:22 · 217 阅读 · 0 评论 -
PAT 1103
自己的方法总是不对,参考了大佬的 #include #include #include #include #include #include #include #include #include #include using namespace std; #define N 405 int n, k, p; int fidx = 0; int factor[N]; int res[N]; int原创 2017-03-16 14:31:07 · 305 阅读 · 0 评论