PAT乙级题库踩坑实录

[截止2021.7.28乙级题库已经全部AC]

题目名称: 1030 完美数列 (25 分)

  • 测试点3踩坑
  • 每次取m后,不用从m后第一个元素开始判断是否大于mp,直接从m后第maccnt就可以,节省时间.

题目名称: 1032 挖掘机技术哪家强 (20 分)

  • 数组下标可能取到N,所以声明时应该声明为a[N+1].
  • 最后判断最值时,可以先把初值取成第一个元素值和下标(学校ID),如果默认取0,可能出现最后结果就是0,不符题意(学校ID从1开始取的.)
  • 测试点2踩坑

题目名称: 1033 旧键盘打字 (20 分)

  • 注意即时上档键"+"完好,如果某字母无法输出,其大写字母也无法输出.
  • 测试点4踩坑

题目名称: 1034 有理数四则运算 (20 分)

  • 求最大公约数.
  • 判断分数正负,同号为正,异号为负.不推荐使用a*b<0来判断,原因是很可能两个极大的数相乘以后超过了long long int 的范围,溢出导致为负.可以使用最笨的代码if ((a < 0 && b >0) || (a > 0 && b <0))
  • 分数加减乘除.ab,cd分别为两组分子分母.加: simplely(a*d+b*c, b*d).减: simplely(a*d-b*c, b*d).乘: simplely(a*c, b*d). 除: simplely(a*d, b*c).
  • 测试点3踩坑.

题目名称: 1035 插入与归并 (25 分)

完全不会做,参考的柳神的代码.

  • 插入排序和归并排序原理(如何根据中间序列来区分使用的是那种排序方法)
  • 非递归来模拟归并排序的过程(难点),注意和归并算法做区分.

题目名称: 1040 有几个PAT (25 分)

没想到啥好办法,最后参考的柳神的代码.
每次遇到A时根据此A字符前的P个数*此A字符后的T个数可以算得此A字符可组成的"PAT"个数.
然后遍历一遍字符串就可以得到总的.
关键点: 算P的个数从前遍历一个个++就可以,但是算后面的T的个数需要提前把总的T个数算出来.然后–.

题目名称: 1045 快速排序 (25 分)

笨办法硬遍历超时,最后用的柳神的办法:

  • 序列中只要满足左侧都比自己小,右侧都比自己大的元素,在这个序列中的从小到大的位序一定也是他当前的位置.
  • 再检查下左侧的所有元素是不是都小于自己就可以了.
  • 测试点2答案为0个主元,第二行没有内容,仍要输出空行,否则报错.

题目名称: 1048 数字加密 (20 分)

  • 只考虑了待加密字符串比密码长的情况,然而若明文比密码短的话也应该在最前面补0.
  • 踩坑点 测试点2 5

题目名称: 1049 数列的片段和 (20 分)

  • 测试点二数据精度double不够,需要使用long double.
  • 参考了文章1049 数列的片段和 (20 分) (测试点2) 浮点型运算的精度问题

题目名称: 1050 螺旋矩阵(25) [模拟]

不会做…

  • 如何分解一个数,使之变成m*N,且m和n最相近.
  • 如何模拟生成非递增模拟矩阵.

题目名称: 1051 复数乘法 (15 分)

  • 浮点数类型保留小数点后位数格式为%.xf, x代表位数.会自动进行四舍五入.
  • 但是需要注意的是负的浮点数在舍掉小数变成0的时候,并不会将负号"-“去掉, 与我们日常习惯不同,此时需要根据要保留的小数位数的下一位四舍五入情况来手动去掉负号” -".例如保留两位小数%.2f,此时小于0但是大于-0.005(比比如-0.00001)时候,会变成“-0.00”,应该手动舍去负号.

题目名称: 1052 卖个萌 (20 分)

  • 刚开始用char类型来存储的表情符号,后来发现可能一个表情不止一个字节(比如中文符号),应该改成读取string并剔除[]字符.
  • c++中’‘字符代表转义,所以如果想打印’‘字符,需要使用’\’.

题目名称: 1053 住房空置率 (20 分)

  • 测试点1,2踩坑

    观察期超过D天,不是小于e的天数超过D天…

题目名称: 1054 求平均值 (20 分)

  • 学习字符串转数字的方法.(也可以用来判断字符串是否是数字),这道题的重在学习判断字符串是否是符合格式的实数.
char a[50] = {0},b[50] = {0};
double temp;
cin >> a;
//按格式转换
sscanf(a,"%lf",&temp);
//重新转换回字符串
sprintf(b, "%.2f",temp);
//判断a和b是否一致.
for(int j = 0; j < strlen(a); j++)
{if(a[j] != b[j]) flag = 1;
}

题目名称: 1055 集体照 (25 分)

没啥坑,但是比较复杂,没做出来…

题目名称: 1064 朋友数 (20 分)

题目要求算朋友证号,而不是朋友数的朋友证号!
另外虽然AC了,方法很笨.
其实set容器就是这道题的量身定制.

题目名称: 1065 单身狗 (25 分)

  • 核心代码有点绕,费了点时间.
int m;
cin >> m;
vector<int> guest(m), ismarryed(100000);
for (int i = 0; i < m; i++)
{cin >>guest[i];//单身狗两种条件:①无cp②有cp但cp没出席//每有一位嘉宾出息,且其有cp,说明其伴侣若出席就不是单身狗if(couple[guest[i]]!= -1){ismarryed[couple[guest[i]]] = 1;}
}
  • 测试用例1不过,仔细看题发现编号是可以取0000的,所以couple数组的默认值不能选0,应该在初始化的时候赋值成-1.

题目名称: 1068 万绿丛中一点红 (20 分)

  • 踩坑点一,格式错误整了半天,后来发现(5, 3): 16711680,不止16…前面有空格, 3前面也有一个空格…
  • 踩坑点二,点得唯一,不唯一的话就算是超过了阈值也不算数.
  • 判断八个方向的周围点是否满足差值参考了柳神的巧妙代码,自己写的贼笨…(可以定义八个方向的方向数组,然后遍历)
  • 判断差值可以不用abs()绝对值函数,直接判断上下限制也可以,即v[i][j] - v[tx][ty] >= (0-tol) && v[i][j] - v[tx][ty] <= tol

题目名称: 1070 结绳 (25 分)

  • 刚开始前三个点不过,百度了下发现原因出在第一根绳子多折了一次.具体代码如下,应该让sum的初值就等于第一根绳子长度,
int sum = v[0];
for (int i = 1; i< n;i++)
{sum = (sum + v[i])/2;
}

题目名称: 1073 多选题常见计分法 (20 分)

  • 个人认为是乙级题目里最麻烦的题…
  • 计算多选题的正误时,需要分只是漏选和选了错误选项两种,因为前者会得一半分.

题目名称: 1074 宇宙无敌加法器 (20 分)

  • 测试点1,3踩坑.
  • 两个数相加后若最高位的结果仍有近卫,需要在最终结果前补’1’.

题目名称: 1075 链表元素分类 (25 分)

  • 练静态链表的好题.
  • 稳定分类

题目名称: 1077 互评成绩计算 (20 分)

  • 一组整数算平均数并要求四舍五入怎么办?
    首先,整数如果直接求和sum并除以cnt会直接被截去小数部分,所以需要转换为实数类型在计算,小技巧,可以sum直接 *1.0即可.
    其次,实数在保留位数的时候会四舍五入,但是在类型转换为int时不会,需要我们手动+0.5后再类型转换.

题目名称: 1080 MOOC期终成绩 (25 分)

  • 踩坑点测试点3,看网上和柳神的代码应该有更巧的办法,但我就按自己的想法用map生撸了.
  • 测试点3排查了好久,网上大部分人都说是59.5也算及格导致的,但是看了半天我的代码已经四舍五入过了,还是不过.
  • 后来想到,期中考试Gmid没成绩的才打印-1.而每个人的成绩我是用结构体存的,默认值是0,最后打印的时候完全区分不出来是参加了考试考了0分还是没参加没成绩!SO,额外加了个字段flag来标示是真的考了0分的人,果然过了.
  • 贴下代码,我觉得只用map生撸反而锻炼了我的map遍历,迭代器失效分析,map往vector转,map排序等相关.
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>using namespace std;struct Grade
{int flag;int Gp;int Gmid;int Gfinal;int G;
};
typedef pair<string,struct Grade> PAIR;bool cmp_val(const PAIR &a,const PAIR &b)
{return a.second.G != b.second.G ? a.second.G > b.second.G : a.first < b.first;
}
int main()
{int P,M,N;cin >> P >> M >> N;string s;int code;map<string,struct Grade> m;for (int i = 0; i< P;i++){cin >> s >> code;m[s].Gp = code;}for (int i = 0; i< M;i++){cin >> s >> code;if (code ==0){m[s].flag = 1;}m[s].Gmid = code;}for (int i = 0; i< N;i++){cin >> s >> code;m[s].Gfinal = code;m[s].G = m[s].Gfinal;if (m[s].Gmid > m[s].Gfinal){m[s].G = (int)(m[s].Gmid *0.4 +m[s].Gfinal *0.6 +0.5);}}auto iter = m.begin();while (iter != m.end()){if (iter->second.Gp < 200 || iter->second.G <60){iter = m.erase(iter);}else{++iter;}}vector<PAIR> v(m.begin(),m.end());sort(v.begin(),v.end(),cmp_val);for (auto item:v){cout << item.first << " " << item.second.Gp << " "<<(item.second.Gmid? item.second.Gmid: (item.second.flag? 0:-1)) <<" "<<item.second.Gfinal<<" "<<item.second.G << endl;}return 0;
}

题目名称: 1081 检查密码 (15 分)

  • 测试点3踩坑.
  • 题目说了是一行一个密码,但是密码是有可能有空格的!!不能用cin来读入,因为cin遇到空格就结束了!需要改成用getline(cin,s)来读入,cin读入n之后记得getchar()把第一行末尾的换行符过滤掉.

题目名称: 1088 三人行 (20 分)

  • 测试点3踩坑
  • 丙不不一一定是int值,可能是4.5这样的数字~所以要用用double存储丙

题目名称: 1089 狼人杀-简单版 (20 分)

  • 完全不会做…抄的柳神的代码.

PAT乙级题库踩坑实录相关推荐

  1. 【PAT乙级题库】全套总结

    我将难度分为三个等级: 简单 中等 难 简单的做一次足以,做再多遍也无任何的意义. 中等的可以多刷几遍 难的多刷几遍 目录 1001 害死人不偿命的(3n+1)猜想[简单] 1002 写出这个数 (2 ...

  2. iOS 入门开发踩坑实录

    其实人生也没有什么道理可讲,但是我们不必丧气,还是要期待,人生有奇遇. 前言 苹果开发者:iOS Developer 最近因为工作需要要开始搞iOS了,简单记录下我收集和学习的过程. 学习资料准备 组 ...

  3. qt5.15.2-银河麒麟-龙芯国产化-项目打包踩坑实录

    qt5.15.2-银河麒麟-龙芯国产化-项目打包踩坑实录 linuxdeployqt几乎是唯一解决方案,网上各种自己写脚本根据ldd去拷贝的,最后大概率都是segment default-除非你是纯Q ...

  4. RIME(小狼毫)踩坑实录(常见问题)

    目录 RIME(小狼毫)踩坑实录 适合谁使用 配置文件规则 文件目录 命名格式 yaml语法 踩坑 配置微软双拼 增加词典 GUI方式(不推荐) 编写yaml文件方式 符号上屏 总结 RIME(小狼毫 ...

  5. Chromium内核浏览器编译记(一)踩坑实录

    转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/123862868 本文出自 容华谢后的博客 往期回顾: Chromium内 ...

  6. JAVA发布栅格图层_基于 WebGL实现自定义栅格图层踩坑实录

    以下内容转载自totoro的文章<WebGL-Y轴翻转踩坑实录> 作者:totoro 链接:blog.totoroxiao.com/webgl-flipY- 来源:blog.totorox ...

  7. python-onvif 库踩坑

    python-onvif 库踩坑 python2环境 python2环境 时间:2021年6月 操作系统:ubuntu 18.04 参考博客: https://blog.csdn.net/zong59 ...

  8. Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇)

    Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇) 折腾了两三天总算顺利在电脑上完成了装x的双系统安装,一路走来还比较顺利,主要在ubuntu的显卡设置上躺了 ...

  9. HP Zbook 15重装ubantu18后,安装Nvidia驱动(踩坑实录,不推荐尝试)

    电脑型号:HP Zbook 15  G6 显卡:nvidia Quadro T1000 安装方式: 使用官方的NVIDIA驱动进行手动安装(经过安装方式和结果对比,强烈不推荐手动安装的方式,这就是一篇 ...

最新文章

  1. 高级转录组分析和R语言数据可视化第12期 (线上线下同时开课)
  2. 微信小程序/uni-app 封装请求
  3. 【计算机网络】计算机网络 OSI 参考模型 ( 计算机网络分层结构 | OSI 七层参考模型 | 应用层 | 表示层 | 会话层 | 传输层 | 网络层 | 数据链路层 | 物理层 )
  4. 征战蓝桥 —— 2013年第四届 —— C/C++A组第4题——颠倒的价牌
  5. JavaScript从入门到精通之入门篇(一)概念与语法
  6. bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集
  7. Emlog百度快速收录插件
  8. 语音的基本概念--译自CMU sphinx
  9. [论文阅读] AMPNet: Average- and Max-Pool Networks for Salient Object Detection
  10. 疯狂星期四,但是程序员
  11. 数字电子技术反应时间测试电路(纯电路实现)
  12. 论WMS系统的未来前景
  13. CUDA11.4、CUDNN、Pytorch安装
  14. 【Baidu Apollo】5 预测
  15. 什么是windows的域(Domain)?
  16. 个人中心(修改密码)
  17. 如何运用包过滤技术实现个人防火墙
  18. ADI-SigmaDSP开发入门
  19. 无线网密码怎么改服务器停用,手机怎么修改无线网密码?
  20. Python——爬取图片

热门文章

  1. 展现学习能力,可能比展现能力更重要
  2. 八段锦健身养生功法介绍
  3. 高德地图图形面积计算
  4. 摘抄整理-20161115-程序员思维修炼
  5. 可选操作(UnsupportedOperationException)
  6. harrynull过关之路(11-20)
  7. 中小学不得在校内设置食品经营场所,量子摩尔定律问世,美团运营摩拜亏45亿,英伟达史上最大手笔收购,这就是今天的大新闻。...
  8. 中国古代历史发展的转折点
  9. 杨百万:调整后最值得关注的10大金股
  10. AcWing 844. 走迷宫