PAT甲级(Advanced)解题记录
历时:20190627-20190730
github代码仓库:
传送门:地址
按解题时间:
按题目顺序:
1001错误一个,记得考虑特殊情况0;
1002错误一个,注意判断浮点数的时候,用差的绝对值比较呀fabs(coeff[i]-0.0)>10e-5
漏掉了一个fabs导致一个用例一直错误。
1003 dijkstra最短距离算法。用邻接表和邻接矩阵各写了一遍。注意算法书上的总结P377:这种题的三种拓展要求(点权、线权、最短个数)都可以通过在优化路线的时候增加一个数组来输出,如果要求最短距离的路径,也可以增加一个pre,保存每一个节点的前置路径。
1004统计每一层叶子节点个数。EZ
1005①错误一个,记得考虑0;②PAT编译器不支持gets
,整行读取使用c++的cin.getline(str,len)
,加上 #include<iostream> using namespace std;
The function std::gets()
was deprecated in C++11 and removed completely from C++14.
1006 EZ.
1007全是坑,自己思路没错但是输出格式错误。注意各种0的情况。动态规划方法
1008读题认真。while(scanf("%d,&n)!=EOF)
编译器端失灵,可能和没法手动Ctrl+Z有关。学到一个新方法
do{……}while((c=getchar())!='\n')
1009正常做。注意输出格式。在不溢出的情况下,申请数组可以尽量大些,基本也不影响超时。
1010二分法的进制转换【膜柳神】一个很巧妙的点,如果转换成十进制的数,超过了long long上限,会变成负数,也是大的表现。这一点得10分。学习代码思路:
long long findradix(string c,long long n){
char it=*max_element(c.begin(),c.end());//最大元素max_element返回的是迭代器。
long long low=(isdigit(it)?it-'0':it-'a'+10)+1;//最小进制要比最大元素大1;
long long high=max(n,low);
while(low<=high){
long long mid=(low+high)/2;
long long t=any2dec(c,mid);
if(t<0||t>n) high=mid-1;//t<0;转换的进制溢出,也是大于n
else if(t==n) return mid;
else low=mid+1;
}
return -1;
}
1011EZ.
1012学习使用C++的sort
,算法笔记P235,sort(a,a+N,cmp);
1013图的dfs遍历求连通图个数。
1014 第三还是第四次做,终于AC了,排队模拟题,难顶。
1015测试用例2折腾半天,质数的判断,最好还是吧0,1,2单独列出来返回结果。0,1不是质数(也不是合数,2是质数)质数英文prime number。
1016重写了一遍当时调试了很久的代码,一遍过了可还行。
1017 模拟题,本来写的好好的,因为最后结果浮点数的问题,怀疑自己的思路检测了一个多小时。double res=int/int
是错误的…int/int直接就是整型保留了。
1018自行车管理系统,人都做傻了25/30。dijkstra求最短距离,最短距离路径又很多条,沿路又要平衡权值,没想出来怎么一边走一边优化,只好把所有最短路径都输出再遍历计算一遍需要带的自行车数量。还是未知原因没能AC 【0726更新】和1087做法一样,用pre保存所有最短路径,dfs以后挨个计算。一遍过~用时30分钟。
1019EZ.注意特殊情况0即可。
1020二叉树,基础题,跟着算法笔记复习了一遍前中后层次四种遍历,以及利用前中、中后遍历数据构建二叉树的算法。代码全部贴进去了。代码
1021无环图可以看作树,因为只有n-1条边,无环(连通图数量为1)肯定就是树,所以只用bfs即可,第一次bfs先完全搜索判断有几个连通图,只有一个连通图再对每一个节点作为根节点进行bfs得到最深深度。最后比较输出。
1022基础输入输出题目,复杂但是不难,练速度。学一下getchar();scanf("%[^\n]",keywordtemp);
这种整行读取的方法。
1023字符串数字翻倍;EZ
1024 回文数判读+大数字相加(字符串string操作)string
相关操作需要巩固(reverse
函数)
1025STL sort结构体排序基础题。注意一下vector的sort函数写法sort(a.begin(),a.end(),cmp);
距离就只能begin+n这样了;
1026 模拟题。细节。冷静的时候再练吧。。25/30【0727】顶不住,抄了柳神代码。