pat甲级
不要绝望总会慢慢变强
当你觉得整个世界都放弃了你,还有那几行代码值得你珍重!
展开
-
PAT A1111 Online Map(30 分)----最短路径麻烦题
总结:最后一个测试点超时。。1.这道题因为两个要求,同时求的话要互不影响才行,就像求最短路径的时候不能更新时间(重新设置个变量更新)2.以求最快路径为例,当totalen<minlen一定要更新totalsize,否则结果可能出错3.这种题优先采用dijstra方法代码:#include<iostream>#include<vector>#in...原创 2018-09-01 20:27:50 · 653 阅读 · 0 评论 -
PAT A1030 Travel Plan(30 分)
总结:1.常规套路,关键想想怎么存储图,然后就easy了代码:#include<iostream>#include<vector>#include<map>using namespace std;int vi[600];struct road{ int st; int end; int cost; int d...原创 2018-08-31 13:39:53 · 112 阅读 · 0 评论 -
各种排序总结
冒泡排序:https://blog.csdn.net/luoshiyong123/article/details/102981691快速排序:https://blog.csdn.net/luoshiyong123/article/details/80667676选择排序:https://blog.csdn.net/luoshiyong123/article/details/102984...原创 2018-08-28 17:04:07 · 728 阅读 · 0 评论 -
PAT A1098 Insertion or Heap Sort(25 分)------堆排序(attention)
总结:这道题始终有一个测试点过不去,是因为插入排序如 序列s为:1 3 5 7 7 2 0,这个序列前边5个都是有序的。所以第一个无序元素的时候while(s[i]<=s[i+1])有等号。。。。1.这道题考的是给定一个序列,让你判断是堆排序还是插入排序,对于插入排序,前边为有序队列,后边为无序队列,只要找到有序队列旁边第一个无序数,就可以用sort排序,而对于堆排序,先构建最大堆,...原创 2018-08-28 16:24:16 · 620 阅读 · 1 评论 -
PAT A1004 Counting Leaves (30)(30 分)
代码:#include<iostream>#include<vector>#include<map>using namespace std;int m, n;int level, maxn=-1;map<int, int>sk;vector<vector<int> >pp;void dfs(int inde...原创 2018-08-23 21:35:00 · 118 阅读 · 0 评论 -
PAT A1094 The Largest Generation(25 分)----树dfs求最大同层孩子树
代码:#include<iostream>#include<vector>#include<map>using namespace std;int m, n;int level, maxn;map<int, int>sk;vector<vector<int> >pp;void dfs(int inde...原创 2018-08-23 20:40:14 · 111 阅读 · 0 评论 -
PAT A1090 Highest Price in Supply Chain(25 分)--树---dfs简单应用
总结:1.这道题是dfs简单运用,map简单应用,读懂题意不粗心即可,加油加油~~~~~~~~~~~~~~~~~~~~~~~~~~~~代码#include<iostream>#include<vector>#include<cmath>#include<map>using namespace std;const int maxn...原创 2018-08-23 19:01:30 · 99 阅读 · 0 评论 -
PAT A1079 Total Sales of Supply Chain--树---dfs遍历
总结:1.在第一次写这道题的时候,我觉着这道题思路挺明确的,不好解决的是题目里说节点数不超过10的10次方有点大了,不好开数组,而且我对于每一道关于树的题我都避免用结构体创建树,怕问题变得麻烦,要么就是通过一个一维数组创建树,或者取巧不创建。2.在这道题中我的思路是每一个节点i都是一个vector[i],vector的大小就是其孩子的个数,在读入数据时候我们要确认根节点以及叶子节点的amo...原创 2018-08-23 18:02:37 · 216 阅读 · 0 评论 -
1102 Invert a Binary Tree(25 分)--二叉树反转左右孩子
总结:1.做这道题的时候开始没读懂题意,把invert意思记错了,导致左右子树是反的,很无语,刚过了六级看来不够,继续学习英语很有必要。2.做这道题的时候思路应该是很明确的,但是花了一个多小时,为啥呢》》》分析如下:思路:在读入数据的时候确定根节点,然后保存每一个节点的左右孩子节点(反着保存),然后用一维数组递归建立二叉树,层次遍历就很好解决了,中序遍历也很ok,然后这道题应该是很ea...原创 2018-08-23 15:59:23 · 389 阅读 · 0 评论 -
PAT A1107 Social Clusters(30 分)-----------并查集1
参考:https://blog.csdn.net/a664607530/article/details/73991827总结:1.并查集查找是否在一个根节点下find函数,这道题用f数组保存根节点,如果这个是最终根节点f[i]=-1,如果不是f[i]就是当前i的父亲节点,via[i]表示i爱好的父亲节点,cnt[i]表示-----每一个最终根节点有多少个叶节点代码:#include...翻译 2018-08-26 21:30:03 · 156 阅读 · 0 评论 -
PAT A1022 Digital Library (30)----map图书馆应用
1. while (cin >> key) { pp[key].push_back(id); char c = getchar(); if (c == '\n') break; }读入keywords的时候,用c读取空格,如果c为\n结束代码:#include<iostream&g...原创 2018-08-13 14:20:38 · 97 阅读 · 0 评论 -
PAT A1047 Student List for Course (25)------排序方法重点2
总结:1.写这道题的时候第一次只过了一个点,因为思考不周,多输出了"\n",导致格式错误,下次若是格式错误多试几下就好了,然后就是最后一个测试点过不去超时。2.想好思路写代码:真的很快很爽:不怎么需要调试---前提是有思路哈哈哈哈哈哈哈哈!!!3.参考代码中用char[][]二维数组来存名字,比较的时候比较序号的确节省了很多时间,而且代码量几乎减半4.读题一定要读数据范围----否...原创 2018-08-08 18:36:16 · 183 阅读 · 0 评论 -
PAT A1039 Course List for Student (25)--vector的使用
1.总结:vector真的贼好用,不仅可以根据输入数据设置大小,节省空间,而且可以一维,二维,多维各种数据类型的组合。2.cin,cout这种题肯定会超时,以后注意用char*,scanf和printf3.参考代码用的很巧秒,因为name只有三个字母,可以映射到hash表中(占用数组空间也不大),大大提升了效率4.还是先想思路,在写代码才会下笔如有神!!!代码(最后一个点超时):...原创 2018-08-08 15:29:55 · 225 阅读 · 0 评论 -
PAT A1024 Palindromic Number (25)----字符串操作注意
Conclusion:1.进位不仅仅加在两个数相加的时候,计算当前位向上进位也要考虑上一位的进位!!!!代码:#include<iostream>#include<string>using namespace std;bool isRT(string s){ for (int i = 0, j = s.length() - 1; i < j...原创 2018-08-08 10:06:23 · 160 阅读 · 0 评论 -
PAT A1053 Path of Equal Weight(30 分)-----树---dfs必看经典题目(attetion)
总结:1.这道题不难,但是是我在pat中遇到的关于树遍历题目相对比较复杂的题目之一了,给我的感觉和图相似,当然图更难。这道题有权,还要求规定sum的路径,还不止一条。2.我的解决办法是用dfs加了sum(从根到叶权之和,以及一个vector参数,用来记录从根到叶都经过了哪些节点),用了map来记录不同sum的路径3.sort()自定义排序过程中遇到了一个问题:[C++] Express...原创 2018-08-24 14:58:50 · 174 阅读 · 0 评论 -
PAT A1013 Battle Over Cities(25 分)---图1---求最大连通子图数量
总结:1.关于图的题可能会超时,优先选printf和scanf,优先选邻接表存储代码:#include<iostream>#include<vector>#include<algorithm>using namespace std;int repair = 0;vector<vector<int> >pp;int...原创 2018-08-28 19:11:29 · 404 阅读 · 0 评论 -
PAT A1108 Finding Average(20 分)
总结:1.最坑的就是 printf("The average of %d number is %.2f", pp.size(), ps);当只有一个合法数字的时候输出number2.代码:#include<iostream>#include<vector>#include<string>using namespace std;vector...原创 2018-09-01 18:20:38 · 165 阅读 · 0 评论 -
PAT A1109 Group Photo(25 分)
1.这道题初看题意复杂,其实很简单的排序问题。2.要注意用vector的时候一定不要多给,少给了会vector out of ....,但多给了不容易看出来,要多少给多少,我就是因为多给了导致排序出来得结果有两个空node代码:#include<iostream>#include<vector>#include<string>#include&...原创 2018-09-01 17:55:20 · 266 阅读 · 0 评论 -
PAT A1110 Complete Binary Tree(25 分)----判断是否完全二叉树
总结:1.这道题很简单,但是我第一次只得了18/25.做简单题的时候一定要细心。2.当表示没有孩子的时候用-,所以开始很自然的想到用char读取,但是注意孩子的序号完全可能为两位数,11,12.所以用string读取。代码:#include<iostream>#include<vector>#include<map>#include<...原创 2018-09-01 17:51:48 · 405 阅读 · 9 评论 -
PAT A1003 Emergency(25 分)----最短路径
总结:这道题坑的地方在于求最大集结救援队是值得一条最短路线上的所有节点之和,而不是所有最短路径上的节点之和深搜(dfs):1.求路径,点权,边权。遍历,最大连通子图。2.两段代码分别使用深搜和dijkstra算法解决的,有兴趣可以两端都看看,第二段代码比第一段快,递归程序消耗大。dijkstra算法相当于非递归版的广度搜索。代码:#include<iostream&...原创 2018-08-29 23:32:49 · 437 阅读 · 2 评论 -
PAT A1066 Root of AVL Tree(25 分)------AVL树的调整------很精彩(attention)
总结:----第一次写---妄图用数组来完成--事实证明是不现实的。。。。。本代码参考:https://www.liuchuo.net/archives/2178总结第一次失败的教训:1.没有理解好rotate的精髓,用数组麻烦得多2.整体代码结构不是特别清晰,通过ac这道题,让我加深了对avl树的理解,以及对树整章的理解。3.这代码难点主要是对插入后的判断和调整,判断主要...原创 2018-08-25 20:08:49 · 231 阅读 · 0 评论 -
PAT A1018 Public Bike Management(30 分)
总结:该代码有两个测试点没过,因为没有考虑0->2>3>1(2,3,1权值分别为:54,0,78),最大容量为100,这种情况需要send46辆,剩18,而不是send18,剩01.这道题考察了dfs,最短路径问题,加上了送出的车最少和拿回的车最少,主要是自己之前理解出错,导致第一次没通过,第二次的代码是分开做的便于理解代码1;#include<iostr...原创 2018-08-29 19:15:58 · 484 阅读 · 0 评论 -
PAT A1099 Build A Binary Search Tree(30 分)----二叉搜索树(非完全)--求层次遍历
总结:1.感觉挺简单的,只要思路清晰,写一遍就全ac了,这种题再给我来一打哈哈哈哈2.掌握层次遍历利用队列----左子树先进队,右子树后进队,主要考察怎么表示一棵树!!代码:#include<iostream>#include<queue>#include<algorithm>#include<vector>using nam...原创 2018-08-25 14:37:18 · 197 阅读 · 0 评论 -
PAT A1034 Head of a Gang(30 分)---图3---图的遍历---求符合条件的最大连通子图(序号用字母代替)
总结:1.涉及到图的时候一定要考虑a和b,b和c,那么a和c也有联系2.就是把1 2 3 4 5 换成A B C D E问题就复杂好多3.读题!!!!代码#include<iostream>#include<vector>#include<map>#include<algorithm>#include<string&...原创 2018-08-29 15:38:41 · 173 阅读 · 0 评论 -
PAT A1021 Deepest Root(25 分)------图2---求最大联通子图和最大深度的节点集合(看)
总结:1.这道题算是相对比较麻烦的一道题,开始题意没读懂,A graph which is connected and acyclic can be considered a tree.开始没明白他说的这个树是什么,被acyclic误导了,以为不能出现三角形这种循环的图,结果是大于2个最大连通子图都不是树2.这道题的麻烦之处在于先要看该图是不是只有一个最大连通子图,如果是则要求最大深度的节点...原创 2018-08-29 08:58:02 · 529 阅读 · 0 评论 -
PAT A1064 Complete Binary Search Tree(30 分)--------------完全二叉搜索树----复习+1
总结:1.给定一组树,我们可以确定一棵完全二叉搜索树,其中的大小关系按从小到大就和中序遍历一样,最先被遍历到的元素最小。代码:#include<iostream>#include<vector>#include<queue>#include<algorithm>using namespace std;vector<int&...原创 2018-08-25 00:36:17 · 145 阅读 · 0 评论 -
PAT A1043 Is It a Binary Search Tree(25 分)-----------二叉搜索树与二叉镜像搜索树----必看!
再次申明:本博客仅供个人pat复习之用,某些方法借鉴于某某博客开头会申明本题解答来源:https://www.liuchuo.net/archives/2153总结:这段代码的精妙之处在于以下几个方面:1.按常规出发:判断是否是二叉搜索树--》判断是否是镜像二叉搜索树-》是的话分别求后续遍历否的话--》cout<<"NO";该代码首先假定为二叉搜索树---》在假...翻译 2018-08-24 21:09:17 · 210 阅读 · 0 评论 -
PAT A1087 All Roads Lead to Rome(30 分)----最短路径(加筛选条件)
总结:1.图中的点名称为字母,所以用两个map来进行转换2.先求最短路径集合,再求符合要求的最短路径代码:#include<iostream>#include<vector>#include<map>#include<string>using namespace std;int weight[500];int vi[500...原创 2018-08-31 18:43:56 · 313 阅读 · 0 评论 -
PAT A1072 Gas Station(30 分)-------图最短路径---比较难点的题
总结:1.这道题用了dijstra算法,关键是开始对G1非数字的处理即Gi处理成i+n;我最后一个测试点开始没过就是因为用s.size()判断输入为数字还是G2,但是其实数据n+m是大于99的代码:#include<iostream>#include<algorithm>#include<vector>#include<string&g...原创 2018-08-31 16:54:19 · 1051 阅读 · 0 评论 -
PAT A1077 Kuchiguse (20)
总结:本来正确的思路,却搞了好久才弄出来,自己给自己挖坑。公共后缀的长度肯定是从(1-最短的一个字符串长),我却慢慢改,认为8个字符就后了,或者大于等于2才行,哎!以后思维一定慎密啊!代码:#include<iostream>#include<string>#include<vector>using namespace std;bool st...原创 2018-08-03 15:35:49 · 312 阅读 · 0 评论 -
PAT A1025 PAT Ranking (25)
总结:这道题我用了结构体数组存每个考点的数据,最后放进vector中进行总的排序,第一次最后一个测试点超时了,后来把ID变成char*类型就=ok了,看来cin,cout输入输出string很费时间,考场上尽量用scanf和printf把代码:#include<iostream>#include<vector>#include<algorithm>...原创 2018-08-03 12:35:57 · 166 阅读 · 0 评论 -
PAT A1059 Prime Factors (25)(25 分)
总结:1.这次代码写的很流畅而且没出错,原因就是自己之前就想了到底怎么写,下次一定要仔细想了在下手代码:#include<iostream>#include<set>#include<map>using namespace std;multiset<int> pp;void xxx(long long m){ for ...原创 2018-08-07 23:13:16 · 219 阅读 · 0 评论 -
PAT A1074 Reversing Linked List (25)--链表2
总结:1.采用两个数组存储每个节点的数据和下一个节点的地址2.reverse操作通过遍历一遍链表把每个节点的地址存在list中,然后将翻转操作变成从list到result地址的对应变化输出即可代码:#include <iostream>using namespace std;int data[110000], next1[110000];int list[1100...原创 2018-08-05 15:57:24 · 194 阅读 · 0 评论 -
PAT A1032 Sharing (25)--链表1
总结:1.采用静态链表存放数据(data[10000]放数据,next1放下一个节点地址)2.printf("%d %c %d");//中间有空格3.读题的时候注意链表的节点如:00001 00002 400001 a 1000110001 s -100002 a 1000210002 t -1两个a的节点地址如果一样,那么如果下一个节点地址也一样的话,前面的节点就会...原创 2018-08-05 15:53:09 · 250 阅读 · 0 评论 -
PAT A1007
读题很重要!很重要!很重要!我一开始想成了输出最大字串开头结尾的序号。。。。还有这道题O(n)时间复杂度也能做1007 Maximum Subsequence Sum (25)(25 分)Given a sequence of K integers { N~1~, N~2~, ..., N~K~ }. A continuous subsequence is defined to b...原创 2018-07-31 21:01:01 · 252 阅读 · 0 评论 -
PAT A1008
1008 Elevator (20)(20 分)The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in speci...原创 2018-07-31 20:57:31 · 252 阅读 · 0 评论 -
PAT A1009
ps:这道题挺简单,但是要注意两个多项式乘会出现某一项等于0,这一项就不能输出我用的map<int,double>存储数据1009 Product of Polynomials (25)(25 分)This time, you are supposed to find A*B where A and B are two polynomials.Input Specifi...原创 2018-07-31 20:55:37 · 310 阅读 · 0 评论 -
PAT A1071 Speech Patterns (25)
有一个测试点过不去a......代码:#include<iostream>#include<map>#include<string>#include<algorithm>using namespace std;map<string, int> pp;bool cmp(char p){ return !((p ...原创 2018-08-09 16:29:32 · 226 阅读 · 0 评论 -
PAT A1051 Pop Sequence (25)(25 分)----栈的运用
代码:#include<iostream>#include<stack>using namespace std;int a[1100]; //入栈数组;int b[110][1100]; //出栈数组int main(){ int m, n,k; cin >> m >> n >&g...原创 2018-08-09 13:51:53 · 231 阅读 · 0 评论 -
PAT A1060 Are They Equal (25)----string经典例题(重点复习)
总结:1.对于这类题,首先要弄清楚题意,找到一个合适的方法才会事半功倍,否则就会像我第一次写了一百多行代码发现只过了3个测试点,还有这类问题思考问题一定要全面,否则很容易出错2.这道题的坑主要是在:0.00000123,000123,000.0000,0000这几个数据上,去除第一位位0但是第二位不为小数点的0然后分0.12345(小数部分为0)和123.12344(都不为0)和123...原创 2018-08-09 10:27:46 · 196 阅读 · 0 评论