![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT 甲级
sisi-mia
这个作者很懒,什么都没留下…
展开
-
PAT A1023 Have Fun with Numbers 趣味数字 C++
将输入字符串每一位存进vector a 再将vector每一位倍乘加上进位分别存进vector b。将b复制给c 对ac进行排序比较 是否数字一样 一样就输出yes 不同输出no。这道题最长会有20位 会存在精度问题 不能直接倍乘再进行比较。然后将b的从高位向低位进行输出。原创 2023-04-30 18:48:27 · 95 阅读 · 0 评论 -
PAT A1040 Longest Symmetric String C++最长回文字符串
第一种奇数:s PAT&TAP s。我们从头来枚举中心点 计算最大长度。第二种偶数:s PATTAP s。比较简单这道题思路也很清晰。回文字符串有两种形式。原创 2023-04-30 18:13:31 · 94 阅读 · 0 评论 -
PAT A1044 Shopping in Mars C++ 火星购物
如果不存在子序列和刚好等于m 那么则寻找一个大于m的最小连续子序列和进行输出 如果有多种情况 也是按照从小到大进行输出。寻找连续子序列和等于给定目标数m 如果有多种情况就将多种情况从小到大输出。再次遍历序列 使用双指针 将序列和刚好等于min_t的首尾编号按序输出;首先遍历序列 找到大于等于m的最小序列和min_t。原创 2023-04-22 15:25:55 · 83 阅读 · 0 评论 -
PAT A1117 Eddington Number C++ 爱丁堡数
【代码】PAT A1117 Eddington Number C++ 爱丁堡数。原创 2023-04-22 14:02:52 · 136 阅读 · 0 评论 -
PAT A1051 Pop Sequence C++弹出序列
需要用到栈这个数据结构 还是很简单的。原创 2023-04-19 23:23:36 · 69 阅读 · 0 评论 -
PAT A1148 Werewolf - Simple Version C++s狼人杀简单版
题目大意就是有且仅有一只狼在说谎 就是说一定会有狼人说谎并且只有一只。如果有多种情况 我们输出字典序最小的那种情况。写一个函数判断在狼人是i和j的时候k是否说谎。采用枚举法来列举狼人。原创 2023-04-19 22:55:56 · 76 阅读 · 0 评论 -
PAT A1085 Perfect Sequence 完美序列 C++
数组为什么用long long 而不能用int 明明题目说是10^9呀。原因: 当m*p可能会超出int的表示范围 这也是测试点5不过的主要原因。咱就是说主打一个细节。原创 2023-04-19 00:20:54 · 84 阅读 · 0 评论 -
PAT A1029 Median 中位数 C++
由于两个列表有序 找到中位数只需要将两个列表合并之后找中间数。首先将两个列表输入数组a,b再将数组ab合并存进数组c。再输出数组c的中位数。原创 2023-04-18 23:51:09 · 108 阅读 · 0 评论 -
PAT A1077 Kuchiguse 最长公共后缀 c++
2.若n=0,表示截取从下标为n后的所有字符。substr函数本题用法。原创 2023-04-11 00:04:16 · 74 阅读 · 0 评论 -
PAT A1017 Queueing at Bank
其实我也不太会用 就是没见过的就记下来 下次就会用了。每次顾客服务开始时间是到达时间和窗口空闲时间的最大值。我们把顾客的所有时间按照秒进行表示。对于每一个顾客用结构体存起来。存起来之后再按到达时间进行排序。有一点难 需要用到小根堆。原创 2023-04-01 19:33:41 · 41 阅读 · 0 评论 -
PAT A1141 PAT Ranking of Institutions C++
比较简单 说一个好用的点就是用map可以映射结构体 超级方便对于这个题目来说。原创 2023-03-31 21:21:24 · 53 阅读 · 0 评论 -
PAT A1153 Decode Registration Card of PAT
有一个地方的输出需要注意 就是type类型为3的时候 输出需要用printf 而不能直接cout进行输出否则会运行超时。还有需要注意如果没有符合要求的需要输出na。比较常规的pat排序题。原创 2023-03-31 20:01:21 · 46 阅读 · 0 评论 -
PAT A1071 Speech Patterns 该死的测试点2
例如word1就是单词 wo:rd就是单词wo 和rd。题目自己定义了单词 不是说只有全英文字符串才是单词。原创 2023-03-30 23:44:50 · 43 阅读 · 0 评论 -
PAT A1050 String Subtraction C++字符串减法 测试点2不通过原因
第一遍写的时候发现测试点2不过原因如下:相减的字符串s2里面可能包含空格 如果直接用cin 遇到空格会停止造成错误原创 2023-03-27 16:18:25 · 89 阅读 · 0 评论 -
PAT A1019 General Palindromic Number C++
懒得算开数组要开多大 就直接用vector进行存储了 但是后面进行输出的时候要从后往前进行输出 而不是从前往后输出。可以看出这道题其实限制了n的范围就是一定会大于0;开始就是因为这个原因有测试点过不去。原创 2023-03-27 15:46:24 · 125 阅读 · 0 评论 -
PAT A1100 Mars Numbers C++
这个题目之前也是有写过 但是这个里面还是有一些坑点 就比如说14 转化为火星文就只有一位hel。原创 2023-03-27 15:29:52 · 98 阅读 · 0 评论 -
PAT A1027 Colors in Mars C++
这道题如果测试点过不去就要考虑0这种特殊情况 以及10-13数字对应A-C能不能正确表示。原创 2023-03-27 14:20:13 · 39 阅读 · 0 评论 -
PAT A1015 Reversible Primes C++
每一行输入一个十进制的数和一个目标进制,首先判断这个十进制数是否为素数如果是素数那么再判断这个数转换为目标进制再反转过来是否为素数如果反转也是素数那么就输出yes否则为no。例如 输入5 2,5为素数,那么将5转换为2进制101,101反转后仍然是101,再将101转换为十进制判断是不是素数。常用的判断素数的函数要会写。再就是能明白题目说的意思。原创 2023-03-26 22:52:01 · 39 阅读 · 0 评论 -
PAT A1010 Radix 进制转换C++
数可能很大 longlong用起来 不用会变得不幸。不能暴力枚举会超时,需要用二分查找优化。原创 2023-03-26 22:21:30 · 45 阅读 · 0 评论 -
PAT A1112 Stucked Keyboard C++
第二次查找 如果是没有坏掉的按键就直接加入到结果当中,如果是坏掉的按键那就把i跳k个进行输出。首先把没有坏掉的按键直接存起来,通过第一轮筛选输出坏掉的键,并把坏掉的键另外标注。主要就是考双指针,不难。原创 2023-03-26 21:18:28 · 31 阅读 · 0 评论 -
PAT A1104 Sum of Number Segments测试点3错误的原因
例如 12345 那么包含数字2 左边组合就是2,12,右边结尾数是3,4,5 这样的区间一定会包含2~本题需要注意的点就是总和要用long double 单纯double会测试点3发生错误。相乘就是6种 123,1234,12345,23,234,2345。数学问题就是巧妙超级巧妙 (用左边的可能性乘以右边的可能性)原创 2023-03-26 18:07:39 · 47 阅读 · 0 评论 -
PAT A1033 To Fill or Not to Fill 加不加油(贪心)
需要注意输出为double类型 参与运算的数据最好都是double 不然容易四舍五入把小数部分舍去,从而结果出现误差。还有一个需要注意的点是 要把终点也存进vector中。开始把距离存int 一直不对 多次调试找出问题所在。这样才能判断是否能够到达终点 并且输出正确的值。这道题就是一整个吸烟刻肺 刻苦铭心。长长的57行都是我的眼泪。原创 2023-03-20 21:16:03 · 39 阅读 · 0 评论 -
PAT A1125 Chain the Ropes (贪心)
首先将所有绳子的长度从小到大排序。然后从第二根绳子开始,将每根绳子依次与前面的绳子拼接起来,拼接后更新当前最长的绳子长度,直到最后一根绳子。这样做的时间复杂度为 O(n)。就算暂时跑不通也能自己修改bug 树这一章算是我的命门 尤其是平衡二叉树和红黑树balabla。最近代码能力有所提升但不太多 至少一些简单题不用怎么想直接可以写 测试点都可以跑过。这道题总的来说还是很简单 而且每次都是需要向下取整。要去听一下邓公的课恶补一下。原创 2023-03-19 21:44:39 · 33 阅读 · 0 评论 -
PAT A1113 Integer Set Partition
首先输入给定的 N 个正整数,然后判断 n1 和 n2 的绝对值之差是否为0,同时记录 n1 和 n2 的绝对值之差为1时的情况。接着计算 A1 和 A2 中元素的个数,并将给定的正整数排序。然后遍历排序后的正整数,依次将它们分配到 small和 big两个集合中,计算它们的元素和 small 和 big,最后计算它们的差值,即为所求的结果。原创 2023-03-19 21:26:58 · 42 阅读 · 0 评论 -
PAT A1070 Mooncake 贪心
如果当前月饼的库存量小于市场总需求量,那么就把当前月饼全部卖出,并将市场总需求量减去当前月饼的库存量。该算法的时间复杂度为 O(n \log n),其中 n 为月饼的种类数。因为需要对 vector 进行一次排序,时间复杂度为 O(n \log n),遍历 vector 的时间复杂度为 O(n),因此总时间复杂度为 O(n \log n)。首先输入月饼的种类数 n 和市场总需求量 m,然后输入每种月饼的库存量和价格,计算出每种月饼的单价并存储在 vector 中,按照单价从高到低排序。原创 2023-03-19 21:07:45 · 48 阅读 · 0 评论 -
PAT A1067 Sort with Swap(0, i)
将所有的数按照它们在未排序的序列中的位置进行编号,即 p[i] 表示数字 i 在输入序列中的位置,然后我们按照顺序处理每个位置上的数字。需要注意的是,我们在处理每个位置上的数字时,先处理掉 0 所在的环,这样可以避免在之后的操作中与 0 所在的环交叉而导致死循环。如果当前位置上的数字不是 i,那么我们就交换 p[0] 和 p[i],这样就能将 i 移动到它应该在的位置。ps:此题需要注意的点就是 题目中交换的是数字 但是在实际交换中 交换的为坐标。原创 2023-03-19 20:37:04 · 35 阅读 · 0 评论 -
PAT A1038 Recover the Smallest Number 排成最小的数 (贪心)
假设 a 和 b 的长度分别为 la 和 lb,我们对它们进行拼接,得到两个数字 ab 和 ba。如果 ab < ba,那么我们就确定 a 需要排在 b 的前面,否则就确定 b 需要排在 a 的前面。排序的时间复杂度为 O(nlogn),拼接的时间复杂度为 O(n),因此总时间复杂度为 O(nlogn)。对于所有的数字片段,我们需要确定任意两个数字片段之间的先后顺序,使得组成的数字最小。按照这种方式对所有的数字串进行排序之后,再将它们依次拼接起来,就可以得到最小的数字。可以用贪心的思想解决。原创 2023-03-19 18:35:31 · 32 阅读 · 0 评论 -
PAT A1092 To Buy or Not to Buy买还是不买
这个题好像乙级也出现过,简单题。先统计前一个字符串中相同种类的个数。用unordered_map神来之笔 非常方便进行映射。第二个字符串进行查找 如果没有就cnt++最后判断cnt进行输出。原创 2023-03-15 22:58:10 · 133 阅读 · 0 评论 -
PAT A1083 List Grades 成绩单
把成绩和姓名用vector存一对pair,进行排序。把成绩和学号存进map方便后续输出。题目大意就是把区间内的包含左右端点的成绩进行从高到低排序 进行输出它们的名字和学号。信息量不多的时候就可以直接这样写 ,但是信息量多就需要用结构体。原创 2023-03-15 22:45:58 · 44 阅读 · 0 评论 -
PAT A1069 The Black Hole of Numbers
还有do while的注意事项 就是while语句为真就一执行循环体。写一下思路:把输入的数一个一个分开存进数组里面。这个题就是一整个麻烦住了 难倒是不难。原创 2023-03-15 21:19:46 · 39 阅读 · 0 评论 -
PAT A1054 The Dominant Color求主导色
主导色是所有元素中超过一半的颜色,题目中确保它一定存在,所以有且只有一个。通过哈希映射来确定元素的主导色。原创 2023-03-15 17:04:58 · 44 阅读 · 0 评论 -
PAT A1047 Student List for Course测试点3超时的原因
在输入名字的时候用字符数组进行存储,不要选择直接用string存储字符串 可能是太大了就发生超时。字符串数组转string输出 需要加上.c_str();这个题目不难 但是写出来测试点3就发生了超时。这一块进行修改之后就没有什么问题了。原创 2023-03-14 20:07:32 · 43 阅读 · 0 评论 -
PAT AHashing - Average Search Time
这个题我的代码写的好复杂。贴一下 明天再优化代码。原创 2023-03-13 01:33:22 · 38 阅读 · 0 评论 -
PAT A1137 Final Grading
这个题目写的太不容易了。原创 2023-03-13 00:48:38 · 52 阅读 · 0 评论 -
PAT A1078 Hashing 平方探测法
主要难点就是 平方探测法的函数之前一点没有见过 每次找空位置插入 没有就平方再找 插入之后就标记。这道题是今天写的感觉最难的一道题了。还有一位老朋友就是判断素数。原创 2023-03-12 23:59:02 · 49 阅读 · 0 评论 -
PAT A1149 Dangerous Goods Packaging 比较巧妙的解法~
对于每一张清单里的物品存进set里面 再对ab数组进行遍历看是否有不能相容哦的物品同时出现在set里面。这个题的解法有点巧妙 开始一直段错误或者运行超时 真的气死!把每一对不相容的的分别存进a,b数组里面。原创 2023-03-12 22:47:37 · 60 阅读 · 0 评论 -
PAT A1144The Missing Number
那么没出现的最小数最大为n+1,因此数组至少要开到n+2,开少了容易测试点过不去。不是全局数组必须要初始化哟。题目大意 找给定的n个数里面没出现的最小数。ps:个人感觉用数组最简单。原创 2023-03-12 21:27:47 · 35 阅读 · 0 评论 -
PAT A1120 Friend Numbers
主要思想就是输入的时候算一下每个数的朋友数 然后插入进set set会把相同元素剔除。pat总是会存在空格问题 真的很烦 每次都要搞个锁。朋友数 乙级好像也出现过这道题。而且set还会排序 真的好用这个容器。然后从前往后输出即可。原创 2023-03-12 20:42:32 · 44 阅读 · 0 评论 -
PAT A1063 Set Similarity
这道题主要需要注意的是输出 两个int转百分比需要强转成double 以及%的转义字符是两个%%比较特殊需要记忆。本题的大意就是两个集合的交集除以两个集合的并集 结果用百分比表示并且保留一位小数。遇到一些疑惑的点就是多调试 试一试就知道行不行 不行就找bug学会就好了。原创 2023-03-12 19:45:38 · 45 阅读 · 0 评论 -
PAT A1059 Prime Factors 质因子
枚举到根号n就可以 这个时候也最好不要写i*i原创 2023-03-12 02:18:17 · 54 阅读 · 0 评论