PAT-A 全147题简要总结

1001 A+B Format

数计算,修改字符串,没什么好说的

emm,自己当年还是用JAVA写的,想想也是3年前了吧,唉,恍惚三年

1002 A+B for Polynomials

多项式存储,遍历即可

1003 Emergency

最短路径,同时有一些其它的权重,不过这里的people num局部最优就是全局最优,所以不用保存多条路径,还是比较常规的,标准的Dijkstra算法。

1004 Counting Leaves

数叶子节点,树的表示和遍历,BFS,DFS之类的
需要遍历的时候记录层数

1005 Spell It Right

数字每位处理,字符串映射,没什么特别的地方
(前边的题好简单啊发现)

1006 Sign In and Sign Out

时间格式的处理,找最大值最小值

1007 Maximum Subsequence Sum

很经典的一道题,计算最大子序列的和

可以用DP做,dp[i] = max(num[i], dp[i - 1] + num[i])

其实不用dp数组也没有问题,从左到右,如果加上之后比原来的大,就加上,否则继续看,需要累加变负的之后,置零,这本质上和DP是一样的,只不过更加trick罢了

1008 Elevator

模拟过程,挨个按照条件模拟就好了,没什么

1009 Product of Polynomials

字符串处理

1010 Radix

进制转换

这里要注意的是,需要使用二分查找,不然会超时

1011 World Cup Betting

阅读理解题

1012 The Best Rank

花式排序题

注意,有greater<int>(),省去了写lambda的麻烦

1013 Battle Over Cities

连通分量,DFS即可

注意计算的时候,需要记录visited,防止循环

cin超时我也是醉了。。。

1014 Waiting in Line

排队模拟题,最讨厌的题了,很烦很烦!

排队一般用queue,有优先级的注意可以使用priority_queue

对问题的抽象在解决这类问题中很关键,不过自己的抽象能力并不强。

1015 Reversible Primes

进制转换,数的处理

判断素数(判断素数需要闭着眼睛写出来,还有GCD这些)

1016 Phone Bills

花式排序整理题,只不过这道题有点烦罢了,遇到这种题不要怕,通常都是阅读理解+时间处理之类的,题目理解对了就不会有什么坑了

这里算时间的时候,需要注意,可以用统一基准,这样方便比较和相互之间的运算

1017 Queueing at Bank

排队题,烦

priority_queue真好用

1018 Public Bike Management

最短路径问题,不过这里不能直接得出最优的一条路径,而是要得到所有最短路径,然后DFS找到最优的

注意理解题意吖!!!

1019 General Palindromic Number

进制转换,没什么

1020 Tree Traversals

后中建树,需要熟练使用

1021 Deepest Root

这道题用到了知识性的东西,一开始自己并不知道。

最深的路径,从任意一个点遍历,找到最深的节点,然后从这些节点中任意一个开始遍历,找到最深的节点集合就是了

1022 Digital Library

花式IO、排序、查询题

没想到暴力就能解决,本来还担心超时

1023 Have Fun with Numbers

数的处理,遇到这种题真的开心的要死!

1024 Palindromic Number

数处理,字符串处理,这种题,最好循规蹈矩的来,相对还是比较简单的

1025 PAT Ranking

花式排序题,阅读理解题,不说了,注意看清题意

1026 Table Tennis

唯一一道,没有自己做的题目!!!

花式排队题!!!真的是很烦!

还是自己对问题的抽象能力不够,不过不想看它了,这应该是模拟排序题里的极品了吧,碰到像这样的我认栽。

1027 Colors in Mars

数字转换,开心hhh,基本也没有什么坑

1028 List Sorting

花式排序题,没什么,这个很常规,就是写个lambda就好了。

1029 Median

毕竟LeetCode上hard级别的题目

自己做的时候确实没有做出来

很经典很经典!!!

根据中位数的定义,是中间的那个数
由于有内存限制,所以只能存1个,另一个需要在线处理,也就是边读,边判断是不是合适,如果arr1里的大,选arr1里的,对应cnt1++,如果此数大,选此数,对应cnt2++。

实现起来也是很精妙的!!!

1030 Travel Plan

标准的Dijkstra,不说了,做了这么多,也背过了,包括处理cost,记录路径等等。

1031 Hello World for U

数数,字符串处理,格式输出,没什么,送分题吧,注意特殊条件的考虑,哪怕列举呢,反正没多少

1032 Sharing

链表格式需要注意一下,剩下的就很常规了

1033 To Fill or Not to Fill

还是比较有技巧的一道题,贪心地一段一段往上加

虽然很暴力,但是也可以AC,聪明点的做法是从起点开始,找可以到达范围内的加油站,遇到比自己低的,就用低的走接下来的路,直到走不下去或者结束

1034 Head of a Gang

DFS,连通分量

不过这道题还是挺烦的吧,需要求最大的节点,遍历的过程中求就是了,只是有点烦,不至于不知道如何下手

1035 Password

字符串处理,送分题

1036 Boys vs Girls

花式排序,花式格式题

注意特殊情况的考虑就好

1037 Magic Coupon

唉,就,小trick而已,问题转换,求乘积最大值

1038 Recover the Smallest Number

很经典的一道题

自己刚开始想的很多,不过,后来发现,用贪心的策略就可以解决了,局部最优就是全局最优!排序就对了!

1039 Course List for Student

map的使用,计数,注意可能出现的超时问题

这里有个技巧,如果名字是string不好处理的话,可以考虑hash到对应的整数

1040 Longest Symmetric String

没想到,分奇数长度和偶数长度暴力判断就可以AC哈哈

1041 Be Unique

set或者map的使用,没有什么好说的,遇到这种题估计会开心的要死

1042 Shuffling Machine

字符串转换

这个题需要厘清,到底是从什么转换到什么,很容易搞混

1043 Is It a Binary Search Tree

前序转后序,一开始的时候不熟练,后来遇到的时候也就知道了,递归的进行左子树和右子树

BST性质不担心,按照这样的规则,不符合BST自然不会被加入到tree中

1044 Shopping in Mars

哈哈,碰到“Mars”就要小开心了,多半有时字符串处理啊,进制转换类的题目,至少不会很难。

没想到,这个竟然不是!!!

两个指针,左右,扫一遍就可以了。

1045 Favorite Color Stripe

非常经典的一道题!!!

考虑输入的时候就筛掉不符合要求的数据。

DP之中的经典,当前最长,是对之前所有的j, max(len[i], len[j] + 1)

DP还是难想啊!!!

1046 Shortest Distance

两指针问题

先正遍历一遍求与左边距离,再逆遍历一遍求与右边距离,两者的距离就是中间那段或者距左右两端的和

1047 Student List for Course

跟前边一道题正好相反,也是map的使用,不过,不知道为什么,map会超时,直接开个大数组来的直接红红火火恍恍惚惚

1048 Find Coins

超经典问题,2SUM

左右指针,往中间靠就好,总会找到的

相关的升级版3Sum也是超级经典的问题

1049 Counting Ones

可以说是很经典了,但同时也可以说是很无聊了

这种题感觉背过就可以了,也不会变出什么花样,思想是非常好的,需要好好借鉴

数每一位出现1的次数

1050 String Subtraction

set使用,这里需要记住删除字符串中的字符的使用方式

1051 Pop Sequence

按照题目的要求模拟就好了

我当时做的时候真的是想多了,想的进展序列是前序,出栈序列是中序,还写了个check前中hhh

1052 Linked List Sorting

hhh,直接无视list,排序就好,反正根据排序序列就知道下一个是啥

不过要注意的是,还是要先根据list把在list中的数据放到新数组中,输入中可能有无效数据

1053 Path of Equal Weight

树的遍历,DFS,计算weight,比较常规

1054 The Dominant Color

数数就好了,遇到这种题,肯定开心的要死

1055 The World’s Richest

花式排序题,本来还担心超时,但后来发现,其实还好

1056 Mice and Rice

模拟题,这道题还是很烦的,需要使用到queue来模拟一层一层的操作,不过也没有什么好注意的,认真读题,想最恰当的方式模拟就好了。

1057 Stack

这道题还是值得关注的!

有多种解法吧。

自己采用的是两个set平分栈中的元素,其实有些trick吧,就是利用了set的有序性,这样取中间数,只需要找set1的尾元素或set2的头元素即可。

由于可能有相同的元素,需要用到multiset。

1058 A+B in Hogwarts

进制转换 送分题

1059 Prime Factors

素数,分解因式,没什么

1060 Are They Equal

字符串浮点数处理,贼烦,注意考虑的点很多,比如leading zero,小数点,有效位数等等,耐心的一种情况一种情况考虑,题目本身没什么难度

1061 Dating

阅读理解题,不予评述

1062 Talent and Virtue

花式分类排序题,理解清题意,大致就没有问题了

1063 Set Similarity

set的使用,还好,挨个check就好,不会超时

1064 Complete Binary Search Tree

还是值得注意的一道题,用到了完全二叉树的性质

中序为从大到小的序列,可以递归的进行
层次遍历,就是数组的顺序,所以没什么,只要根据中序把对应的值放对就可以了

1065 A+B and C (64bit)

溢出的判断,仔细考虑溢出的情况

1066 Root of AVL Tree

AVL操作,应该已经可以背过了,闭着眼睛要能写出来

1067 Sort with Swap(0, i)

分两种情况,分开模拟就是了

1068 Find More Coins

经典!经典!经典!

背包问题,DP解决

这道题需要自己再次回味!!!

1069 The Black Hole of Numbers

模拟运算,没什么好说的

1070 Mooncake

理解清题意哇!!!

仔细注意题中的条件,不能只看输入输出!!!

1071 Speech Patterns

map操作,字符串处理,计数

按照题意来就好了,没什么

1072 Gas Station

比较有趣的一道题

标准的Dijkstra,再加上特定条件的判断,还好

1073 Scientific Notation

字符串处理,需要注意,负号,小数点,0等特殊情况

1074 Reversing Linked List

链表处理,还好,就是有点烦,不过对于头尾特殊情况处理好,想清楚就没什么了

1075 PAT Judge

花式排序题,不做评价

1076 Forwards on Weibo

BFS

对于marker的使用需要注意,应该是,遇到marker出队列,而队列仍然不为空的时候放入新的marker

1077 Kuchiguse

字符串处理,共同后缀,遍历判断就好了,也没什么

1078 Hashing

没什么吧,hash的概念,注意加增量是在原来的hash值上加,不是累加

1079 Total Sales of Supply Chain

树DFS遍历求最值,没啥

1080 Graduate Admission

花式排序题,不做评述

1081 Rational Sum

唉,这类题也挺烦的

首先求gcd必须闭着眼睛也能写得出来

其次,按个数输出要考虑到,比如,有整数没分数,有分数没整数,为零的情况等等!!

1082 Read Number in Chinese

按照汉语的4位一个单位进行就可以了,每四位是一致的~

这种题估计不会考第二次了吧,可能考一个反的??那应该会更简单吧

还是要注意,0的情况,直接输出0

1083 List Grades

花式排序判断题,没有什么

1084 Broken Keyboard

直接查找都可以,用set可能会更快些,送分题

1085 Perfect Sequence

这道题还是有点意思的

因为线性搜索会超时,需要用到二分查找,注意二分查找符合条件的下标,最后是取low还是high

1086 Tree Traversals Again

标准的栈操作和树遍历的结合,也就是前中转后,固定写法一定要熟练的写出

1087 All Roads Lead to Rome

Dijkstra+一堆奇奇怪怪的优先级

比较烦,而且输入是字符,还需要转换一下

注意如果遇到特定条件之后,更新对应的值,比如路径的数组啦,最大值啦,最小值啦,该清空,还是该加入等

1088 Rational Arithmetic

这道题是一道极烦的字符串数字运算题目,需要考虑的很多,没有办法,如果考试遇到这个我认栽

没有什么特别要注意的,注意考虑除数为0的情况,以及,能化简先化简,否则有可能中间运算溢出

1089 Insert or Merge

唉,这道题,本来没有那么麻烦,只不过自己遇到的bug特别难发现罢了。

注意考虑数相等的情况!!!!

1090 Highest Price in Supply Chain

树的表示与DFS,还是比较常规的

1091 Acute Stroke

DFS题目,用BFS超内存了,不知道为什么,看来还是DFS比较靠谱

1092 To Buy or Not to Buy

没什么,遍历计数即可

1093 Count PAT’s

挨个计数就可以了,需要想一下,不过还算好想

1094 The Largest Generation

树最大深度,DFS、BFS均可,想想当年还青涩,BFS还用两个queue,来回倒hhh

1095 Cars on Campus

花式排序题,就是有点烦,其它还好

1096 Consecutive Factors

没什么,遍历,符合的话,就继续找就是了,应该有更巧的方法,不过AC了,也就没有管了

1097 Deduplication on a Linked List

本身的处理很常规,但是找bug花了很长时间

唉,bug也很无语,是自己一个没注意,没有办法,智能自己注意咯

1098 Insertion or Heap Sort

这俩排序特征还是比较好找的

边界条件注意,< 和 <= 经常自己被坑在等号上

1099 Build A Binary Search Tree

按照给定的结构建树,然后,中序遍历一遍,得到节点的指针,再按顺序赋值就OK啦

中序遍历什么的,用递归方式就好啦,省的自己用栈操作有问题

1100 Mars Numbers

字符串处理转换,没什么,string操作有点烦,需要考虑空格

1101 Quick Sort

左右扫两遍,还是很经典的一道题,不过知道了之后,就觉得还好啦

当时遇到了一个格式错误的测试点,后来多输出一个空行就好了,唉,算了,这OJ

1102 Invert a Binary Tree

树的遍历,真的是非常常规的题目了

1103 Integer Factorization

这道题坑了自己很久,死活有个点过不去

后来发现,是自己在维护maxSum的时候,没有更新

唉,只有一个点过不去,以为是边界条件,没想到是这样的bug,防不胜防啊,只能自己细心点喽

1104 Sum of Number Segments

数学题,找规律也可以,不是很难找

1105 Spiral Matrix

维护方向,模拟向前走就可以了

1106 Lowest Price in Supply Chain

也是树的遍历,就不多说什么了,这一系列的题都还好

1107 Social Clusters

并查集的经典考法,唉,PAT之前都没有考过并查集,从这道题开始,考了有两三道

因为要输出最后的结果,所以用set存了,注意set的合并操作

1108 Finding Average

字符串处理题,唉,就是有点烦,其它还好

1109 Group Photo

按照题目中给的要求划分求解就好,注意要细心,不然找bug需要很久!!

1110 Complete Binary Tree

BFS判断即可,没有什么

1111 Online Map

两遍Dijkstra即可,没有什么特别的地方,除了打字多一点之外

1112 Stucked Keyboard

字符串处理

有一些情况还是很难分清楚的,注意处理每一步都自习一点

1113 Integer Set Partition

emm,排序一遍就好,反正就两种情况,送分题

1114 Family Property

又是一道并查集,跟之前的那个基本一样,根节点维护相关的信息即可,union的时候也更新信息

1115 Counting Nodes in a BST

BFS即可,比较简单

1116 Come on! Let’s C

花式排序判断题

1117 Eddington Number

计数,最大值,没有什么特别的地方

1118 Birds in Forest

又是一道并查集 不过这个比较简单,不需要维护什么,只需要检测是不是一个根就可以了

1119 Pre- and Post-order Traversals

前后转中,同时判断是不是unique

还是蛮经典的一道题,主语判断非唯一的条件,就是没有右子树,想放到左边或右边都可以

1120 Friend Numbers

数字处理,送分题,开心

1121 Damn Single

map,集合使用,没有什么特别的地方

1122 Hamiltonian Cycle

图,判断,没有什么特别

1123 Is It a Complete AVL Tree

AVL tree的操作

判断完全二叉树

就是写的有点多,其实还好

1124 Raffle for Weibo Followers

花式计数题

1125 Chain the Ropes

贪心,priority_queue真好用

1126 Eulerian Path

数度数就好了

注意还要判断是不是联通图,如果不是,那自然没有欧拉路径了

1127 ZigZagging on a Tree

中后建树
BFS

都比较常规,需要熟练掌握

1128 N Queens Puzzle

数学题吧,反正,很水就是了

1129 Recommendation System

每次更新信息,重新sort,可以说是相当暴力了,不过没超时,那就可以了,OJ,本来就是面向AC得嘛

1130 Infix Expression

树的中序遍历,没啥

注意单个值的考虑

1131 Subway Map

相当之烦的一道关于图的题,可以说是这类题中的极品了,坑也肯多,调bug调了好久

需要注意的是,不能随便选择一条最短的,还要找换乘少的,换乘也是可以从不同路线中选的,所以,唉,坑啊

1132 Cut Integer

字符串数字处理,没啥

1133 Splitting A Linked List

链表处理

本来没啥,可是自己写的时候遇到了bug,后来发现是自己智障了,为null的判断需要时判断是否为-1而不是0

1134 Vertex Cover

需要注意,不是所有的图都用邻接矩阵存,用二维数组,存相邻节点也就OK了

1135 Is It A Red-Black Tree

树,遍历判断,没啥

1136 A Delayed Palindrome

字符串、数字处理,这些基本上都不会有什么大坑

1137 Final Grading

花式排序题,不想说些什么了

1138 Postorder Traversal

前中转后,还更省事,只用输出第一个元素,开心

1139 First Contact

图的题目,阅读理解题,还是比较常规的

注意考虑自身情况,唉,可能还是理解题意的问题

1140 Look-and-say Sequence

阅读理解题,唉,只有好好读题了

1141 PAT Ranking of Institutions

花式排序统计题,没啥的

1142 Maximal Clique

这道题,还是有些意思的!!

求强连通分量!

合并集合太浪费时间了,还是循环比较来的比较直接,应该有更好的算法,需要学习一个

1143 Lowest Common Ancestor

先要根据前序建树,烦

然后要查找,烦

然后要判断LCA,烦

就是烦,其它的都还好

唉,其实有更直接的解法,不过自己没想到,就老老实实一步一步做喽,反正也是很机械的事

1144 The Missing Number

数数,没啥

1145 Hashing - Average Search Time

这道题还是挺烦的,考到了hash的一些概念

虽然试也能试出结果

平方探测,增量是从 0^2 到 size^2 size+1次

1146 Topological Order

暴力的,visit之后,就把相关的所有边去掉,竟然AC了hhh

其实,只要记录入度就可以了,没必要记录整个信息

1147 Heaps

DFS或BFS判断就是了,没啥

然后后序遍历也没啥