自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 收藏
  • 关注

原创 PAT 乙级 所有题目的总结

部分题目答案已经记录,肯定是满分的答案。一共 11 个题没记录答案。

2026-04-02 21:37:35 24

原创 PAT 乙级 1039

依旧简单的一集,熟练使用map。

2026-04-02 21:05:18 27

原创 PAT 乙级 1125

不过我挺好奇,为什么这个地方非要强制转换,min1 = min( min1, (int)v[i].size() );这题挺难的感觉,尤其是匹配那一段。

2026-03-21 01:49:01 24

原创 PAT 乙级 1120

从第 1 块地到第 i 块地。pre[j] - pre[i - 1] <= m 从第 i 块地到第 j 块地。j 要从 i 开始,不知道为啥这个地方错了。本题也是固定类型题目,固定代码。

2026-03-21 01:13:50 21

原创 PAT 乙级 1110

区块反转的做法,不需要真的用 reverse 反转。只需要按照反过来的顺序输出就行了。用双重 for 循环,反过来的顺序压栈到新数组里。最后输出,但整个过程,还是有很多细节要模拟。只需要先分块压栈到二维数组中。

2026-03-21 00:14:08 31

原创 PAT 乙级 1105

想得到,隔几个数字插入一个数字的链表,要新建一个 list,再逐个判断去压栈,最后输出整个链表。所以 list 要采用压栈,最后计算出链表一共的有效结点。链表一定要有的一个操作,不是输入每一个结点都是有效结点。

2026-03-20 23:17:01 19

原创 PAT 乙级 1100

双重 for 循环或者 find 函数运行超时,一律用 map 即可解决。这种生日,谁最年老,直接根据字符串比较。

2026-03-20 21:05:05 23

原创 PAT 乙级 1090

因为一个危险品,可能与这个危险品会发生化学反应的产品不止一种,去仔细观察题目。所以不能直接写等于号。但这个题的 map 复杂一些,map<string, vector<string>> mapp1;这个题是前面某个题的升级版,一样的方法,都是要建立两个 map,因为 map 查询快。这种 map 怎么遍历,那就要写万能不会错的遍历方法,也就是遍历 set 的方法。

2026-03-20 15:43:28 21

原创 PAT 乙级 1075

这题的输入有一个坑,输入要直接使用cin,用scanf ("%05d") 反而容易错,这样写,最后一个地址 -1 就无法输入。这种题感觉得多背几遍,熟悉套路写法。

2026-03-20 14:54:42 22

原创 PAT 乙级 1070

前面必须强制转 double,不然小数点就没了。v[0] 这一段绳子要先加入总数,不能第一段绳子还没跟别人串连,自己先折一半了。简单的一题,但仍然有坑。

2026-03-19 22:01:57 24

原创 PAT 乙级 1065

1、题目说了最后输出要按递增顺序,所以一开始定义数组就可以定义 set<string>,但是这玩意,输出比较麻烦,要写 auto i = v2.begin();2、map.count() 找数据 比 find 找数据快很多,所以两次找数据都用 map,这样才能不超时。从字符串里找子串,v.find(v[i]);从数组里找元素,find(v.begin(), v.end(), 目标元素)为了运行不超时,做了好多优化。3、find 的两种用法。

2026-03-19 21:42:18 24

原创 PAT 乙级 1060

但有一个坑,如果全部公里数都大于全部天数,那 for 循环不会输出东西。再逐个比较天数和骑行公里数。所以要加一步,输出全部天数。本题要先从大到小排个序。

2026-03-19 20:17:31 21

原创 PAT 乙级 1045

本题还有个坑,如果主元个数为 0,那最后还要输出一个 endl;不能没有第二行的空行。二是,该元素左边的元素的最大值,要小于该元素;该元素右边的元素的最小值,要大于该元素。本题不能写双重 for 循环,会超时,只能慢慢修改,改成单重 for 循环。一是,该元素必须跟排好顺序的元素在同一个位置。如果没写这个第二行的空行,会扣 4 分。判断是否是主元,要满足两个条件。

2026-03-19 16:43:07 18

原创 PAT 乙级 1040

计算出,每个 A 前面 P 的个数和每个 A 后面 T 的个数,两个个数相乘,再把所有相乘结果相加,即为最终答案。具体做法是,先计算出,第一个 A 前面 P 的个数和第一个 A 后面 T 的个数,先相乘加入结果,继续往后走。在遇到下一个 A 之前,遇到 P,则 p ++。在遇到下一个 A 之前,遇到 T,则 t --。感觉这种题必须得先学思路,才能做题。

2026-03-19 15:50:32 17

原创 PAT 乙级 1035

要按照归并排序的规则,一遍一遍的去排序,看什么时候得到的数列跟输入给的中途得到的数列一样。然后继续排列一遍,得到答案。插入排序特点,前面几个数字按照递增顺序排列,后面几个数字跟原本数列的数字一样。记录首次 25 分的题,第一次提交就过了。主要思路,如何判断是插入排序还是归并排序。如果满足上述特点,就是插入,否则是归并。如何写出归并的下一次排列后的数据。中间的模拟,要仔细去模拟。

2026-03-19 15:24:09 24

原创 PAT 乙级 1030

首先数组不能定义 int 要定义 long long int ,因为 元素*p 的结果可能会超过 int,所以一开始定义元素就只能定义 long long int。j 不需要每次都从 i 开始。不满足这个条件,就不用再往后循环了。如果直接用两个 for 循环,会运行超时,只能得22分。要在双重 for 循环上加一些限制条件,就不会超时了。核心思想是,先从小到大排序,再循环处理。不亏是25分的题,考的好细致。

2026-03-19 11:54:53 24

原创 PAT 乙级 1025

最后输出的时候,下一个结点的位置,不能用 next,因为链表反转了,但以前的 next 还是没有变。用 sum 得到 k 的倍数:(sum - sum % k)感觉这种代码得背一下。

2026-03-18 21:28:49 20

原创 PAT 乙级 1020

本题的坑是,如果所有库存加起来,还是不够需求量,要单独处理。原来对于结构体,cmp函数要这么写。题目说正数,那就是小数的意思。

2026-03-18 18:28:23 26

原创 PAT 乙级 1124

因为斐波拉契数列, 0 1 1……这有两个数字一样,所以比较要从第三项和第四项开始比较,又因为数组是从 0 开始计数,所以相当于从第二项和第三项开始比较。就找到了离给定数据最近的斐波拉契数 v[k - 1]

2026-03-18 16:56:21 20

原创 PAT 乙级 1119

首先,核心思路是,每个元素,左边连续下降的有几个元素,右边连续下降的有几个元素,取最大值,把最大值放进公式 max1 * 100 + 200,再全部加到 sum 里面。其次有个坑,如果碰到连续相等的元素,怎么处理,不好处理啊。碰到连续相等的元素,要越过去,然后继续处理。该怎么越过去,而且对别的计算毫无影响。这行代码我不知道是巧合,还是说这种题是套路,实在是妙。本题依旧看了参考答案,感觉本题的思路写法,都好难啊。

2026-03-18 14:02:18 29

原创 PAT 乙级 1114

如果用 begin() 或者 begin() + 2,那只删除这一个字符。要想不删到尾,就要用两个数字,一个数字是起始位置,一个数字是要删的长度。但 erase 的用法还挺特殊,跟 substr 用法相似。如果只用一个数字,那就会从数字开始删到尾。

2026-03-18 00:07:46 31

原创 PAT 乙级 1099

本题需要注意,bool 里面的传参,要考虑 1, 要考虑 0,还要考虑负数。

2026-03-17 21:57:24 22

原创 PAT 乙级 1094

不能只写小于号,不然就少搞了一种情乱。本题唯一需要注意点,

2026-03-17 19:19:38 28

原创 PAT 乙级 1089

如果是,则满足了所有条件,有两个狼,剩下的是好人,有两个人说谎,一个是狼,一个是好人。本题要抓住一个关键解题步骤,先确定两个人 i j 是狼,再来进一步验证。当然,最后结果不止一种可能性,所以只要编号最小的两个。进一步验证说谎的是不是一个狼,和一个好人。

2026-03-17 18:58:25 25

原创 PAT 乙级 1084

注意最开始给的那个数字已经算第一步了。

2026-03-17 17:54:26 25

原创 PAT 乙级 1079

这个题坑的很,我还在那想了半天,如果一开始就是回文数,是不是也要丢进去循环。结果不是,如果一开始就是回文数,可以直接结束本题。

2026-03-17 15:35:47 23

原创 PAT 乙级 1074

【代码】PAT 乙级 1074。

2026-03-17 14:40:43 132

原创 PAT 乙级 1069

看到得了满分,我还有点不相信,结果真的是满分,看来逻辑上没有错误。

2026-03-17 14:02:53 133

原创 PAT 乙级 1064

遍历写法 for(auto it = s.begin();= s.end();set 不仅可以使插入的数据不重复,还能自动从小到大排好顺序,真的厉害。输出写法 cout << *it;set<int> s;插入要用insert。

2026-03-17 13:38:53 24

原创 PAT 乙级 1054

这个题真的难,字符串必须用 char 定义,因为这个 string 不能随便输入输出,又因为本题必须要用 sscanf 和 sprintf,所以必须用 scanf,所以必须用 char 输入。本题代码几乎全部是参考答案的写法,自己本来跟答案写的很不一样,但是一直错,就一直改,一直改到跟参照答案几乎一样时,才拿满分。那个输出部分千万别写成 1 numbers,这个问题找了半天。char 因为有 \0的存在,要用strlen(s)

2026-03-17 11:04:50 25

原创 PAT 乙级 1049

还有本题光定义 double 还不够,要定义 long double,至于为什么,不知道。long double 类型的数据是没办法输出的,要强转成 double 类型才能输出。像这么选,每个数字会被选 i * (n - i + 1) 次。本题就是考察一个公式。

2026-03-17 00:02:45 29

原创 PAT 乙级 1044

比如 26 转化成火星文,有了高位,就不要低位了,这种情况要单独讨论。

2026-03-16 23:43:02 16

原创 PAT 乙级 1034

还有要注意,所有的整数定义都要写 long long,scanf 要写 %lld,在最开始定义 a b 的时候也要这么写,因为在后面的传参部分,如果一开始定义 a b 是 int 型,那在传参计算过程中就会算成 int 型,根本不能进行 long long 类型的计算。本题最关键就是要思路清晰的写函数,函数只是处理,分子和分母,把 分子/分母 写回正确的模式。

2026-03-16 16:33:40 24

原创 PAT 乙级 1029

但如果cout << toupper(s1[i]),直接输出,那输出的就是 int 型数字。toupper(s1[i]) 可以当成大写字母,也可以当成 int 型数字。在函数、压栈里是当成大写字母。

2026-03-16 14:59:01 19

原创 PAT 乙级 1024

感觉只能慢慢模拟,得写半天。

2026-03-16 14:24:21 24

原创 PAT 乙级 1019

此题需要注意,s 有可能一开始就是 "6174",仍然需要去循环。所以要用 do while 来判断 s 是否等于 "6174"printf 不能输出字符串 string。s 一直作为循环条件。

2026-03-16 12:13:40 21

原创 PAT 乙级 1118

最难的就是 sqrt 的处理,必须使用 substr,必须使用 stoi,stoi只能处理字符串,不能处理字符。因为 sqrt 后面有可能是两位数。

2026-03-16 00:26:41 29

原创 PAT 乙级 1113

一定要跟ans.resize(n) 搭配着用。这样才可以写ans[i]。添加前导 0 是在前面添加不是在后面添加。jin位如果在最后是 1 要注意添加1.我以后就固定一个方向,哪里是前面。append的语法也要用对。insert的语法要用对。不然就只能用压栈了。

2026-03-15 22:46:29 23

原创 PAT 乙级 1103

我发现 map 好好用,连压栈都不需要,可以直接写。

2026-03-15 21:44:22 26

原创 PAT 乙级 1108

这个题应该是前面有重复的题,那个题好像是输出Pat吧,记不太清楚了。

2026-03-15 21:43:09 19

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除