PAT甲级(Advanced)解题记录

PAT甲级(Advanced)解题记录

历时:20190627-20190730

github代码仓库:

传送门:地址

按解题时间:

blog记录

按题目顺序:

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】顶不住,抄了柳神代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值