分门别类刷PAT甲级

\quad 博主正在准备PAT考试中,欲将PAT155道甲级考试题分门别类罗列出来,这样刷能让自己对每种类型的题有一个综合的认识。这篇博客会持续更新,力求每道题思路尽可能清楚简洁,欢迎大家加我QQ:1613511883一起探讨。

一、模拟题

1、字符串处理(11题)

\quad 字符串处理在PAT中占有较高比重,几乎每年都会考,难度不高,一般在第1题或者第2题,但需要考虑到各种情况,有些题想拿满分有一定难度,需要很细致。

编号标题题解难度等级备注
1001A+B Format (20 分)C++题解1
1005Spell It Right (20 分)C++题解1
1022Digital Library (30 分)C++题解3字符串+map
1035Password (20 分)C++题解1
1061Dating (20 分)C++题解2
1060Are They Equal (25 分)C++题解3科学计数法
1071Speech Patterns (25 分)C++题解1词频统计
1073Scientific Notation (20 分)C++题解2科学计数法
1077Kuchiguse (20 分)C++题解1
10821082 Read Number in Chinese (25 分)C++题解3
1108Finding Average (20 分)C++题解2字符串转数字
1140Look-and-say Sequence (20 分)C++题解1

2、模拟(26题)

编号标题题解难度等级备注
1002A+B for Polynomials (25 分)C++题解1多项式加法
1008Elevator (20 分)C++题解1模拟电梯运行
1009Product of Polynomials (25 分)C++题解1多项式乘法
1014Waiting in Line (30 分)C++题解3队列模拟,全网最简单写法
1016Phone Bills (25 分)C++题解3电话账单
1017Queueing at Bank (25 分)C++题解3模拟银行排队
1026Table Tennis (30)C++题解4
1042Shuffling Machine (20 分)C++题解1数组模拟
1046Shortest Distance (20)C++题解1
1047Student List for Course (25)C++题解1
1054The Dominant Color (20)C++题解1
1056Mice and Rice (25)C++题解1
1063Set Similarity (25)C++题解1
1065A+B and C (64bit) (20)C++题解1
1095Cars on Campus (30)C++题解1
1105Spiral Matrix (25)C++题解1
1109Group Photo (25)C++题解1
1117Eddington Number(25)C++题解1
1120Friend Numbers (20)C++题解1
1124Raffle for Weibo Followers (20)C++题解1
1128N Queens Puzzle (20)C++题解1
1128Recommendation System(25)C++题解1
1139First Contact (30)C++题解1
1144The Missing Number (20)C++题解1
1148Werewolf - Simple Version (20)C++题解1
1149Dangerous Goods Packaging(25)C++题解1
1154Vertex Coloring (25)C++题解1

3、进制转换(4题)

\quad 进制转换作为基本操作,会在pat中有所体现,一般以简单题为主,或者是作为其他类型题的一小部分,知道怎么把十进制数转化成任意进制数和把任意进制数转化为十进制数即可。
\quad 将p进制数x转化为10进制数

int to_dec(int x, int p)
{
	int res = 0, product = 1;  // product在循环中会不断乘p,得到1,p,p^2,p^3...
	while(x)
	{
		res += (x%10)*product;
		x /= 10;
		product *= p;
	}
	return res;
}

\quad 将10进制数x转化为p进制数

string dec_to(int x, int p)
{
	string res = "";
	do
	{
		int t = x%p;
		res += (t+'0');
		x /= p;
	}while(x);
	reverse(res.begin(), res.end());
	return res;
}
编号标题题解难度等级备注
1019General Palindromic Number (20) C++题解1
1027Colors in Mars (20)C++题解1
1058A+B in Hogwarts (20)C++题解1
1100Mars Numbers (20)C++题解2

4、图形输出(1题)

\quad 这种题不常考,且较为简单,不用花额外精力去攻克。

编号标题题解难度等级备注
1031Hello World for U (20)C++题解1

5、查找元素(3题)

\quad 查找元素的题均为简单题,按要求查找最大或者最小即可。

编号标题题解难度等级备注
1006Sign In and Sign Out (25 分)C++题解1
1011World Cup Betting (20)C++题解1
1036Boys vs Girls (25) C++题解1

二、排序(14题)

编号标题题解难度等级备注
1012The Best Rank (25)C++题解3成绩分科目排序
1025PAT Ranking (25 )C++题解2成绩分考场排序
1029Median (25)C++题解3优先队列解决内存溢出
1055The World’s Richest (25)C++题解1
1062Talent and Virtue (25)C++题解1
1075PAT Judge (25)C++题解1
1080Graduate Admission (30)C++题解1
1083List Grades (25)C++题解1
1089Insert or Merge (25)C++题解2插入排序和归并排序
1098 Insertion or Heap Sort (25)C++题解2插入排序和堆排序
1101Quick Sort (25)C++题解2快速排序的另一种思考
1137Final Grading (25)C++题解1
1141PAT Ranking of Institutions (25)C++题解1
1153Decode Registration Card of PAT (25)C++题解1

三、散列(哈希)(11题)

编号标题题解难度等级备注
1039Course List for Student (25)C++题解1
1041Be Unique (20)C++题解1
1050String Subtraction (20)C++题解1
1078Hashing (25)C++题解2
1084Broken Keyboard (20)C++题解1
1092To Buy or Not to Buy (20)C++题解1
1112Stucked Keyboard (20)C++题解2
1116Let’s C (20)C++题解1
1121Damn Single (25)C++题解1
1134Vertex Cover (25)C++题解1
1145Hashing - Average Search Time (25)C++题解3

四、贪心(5题)

编号标题题解难度等级备注
1033To Fill or Not to Fill(30)C++题解1
1037Magic Coupon (25)C++题解1
1067Sort with Swap(0,*) (25)C++题解1
1070Mooncake (25)C++题解1
1125Chain the Ropes (25)C++题解1

五、二分(4题)

编号标题题解难度等级备注
1010Radix (25)C++题解1
1044Shopping in Mars (25)C++题解1
1048Find Coins (25)C++题解1
1085Perfect Sequence (25)C++题解1

六、数论(12题)

1、最大公约数(gcd)和最小公倍数(lcm)

2、素数

编号标题题解难度等级备注
1015Reversible Primes (20)C++题解1
1152Google RecruitmentC++题解1

3、分数运算

编号标题题解难度等级备注
1081Rational Sum (20)C++题解1
1088Rational Arithmetic (20)C++题解1

4、质因子分解

编号标题题解难度等级备注
1059Prime Factors (25)C++题解1

5、大整数运算

编号标题题解难度等级备注
1023Have Fun with Numbers (20)C++题解1
1024Palindromic Number (25)C++题解1
1136A Delayed Palindrome (20)C++题解1

6、其他

编号标题题解难度等级备注
1069The Black Hole of Numbers (20)C++题解1
1093Count PAT’s (25)C++题解1
1104Sum of Number Segments (20)C++题解1
1113Integer Set Partition (25)C++题解1

七、栈和队列(1题)

编号标题题解难度等级备注
1051Pop Sequence (25)C++题解1

八、链表(6题)

编号标题题解难度等级备注
1028List Sorting (25)C++题解1
1032Sharing (25)C++题解1
1052Linked List Sorting (25)C++题解1
1074Reversing Linked List (25)C++题解1
1097Deduplication on a Linked List (25)C++题解1
1133Splitting A Linked List (25)C++题解1

九、搜索(DFS和BFS)(2题)

编号标题题解难度等级备注
1091Acute Stroke (30)C++题解1
1103Integer Factorization (30)C++题解1
1131Subway Map(30)C++题解1

十、树(23题)

1、树的遍历

编号标题题解难度等级备注
1004Counting Leaves (30)C++题解2树的层次遍历
1053Path of Equal Weight (30)C++题解3树的路径问题
1079Total Sales of Supply Chain (25)C++题解2树的遍历
1090Highest Price in Supply Chain (25)C++题解1
1094The Largest Generation (25)C++题解2树的遍历
1102Invert a Binary Tree (25)C++题解2静态建树和遍历
1106Lowest Price in Supply Chain (25)C++题解1
1110Complete Binary Tree (25)C++题解2判断是否是完全二叉树
1115Counting Nodes in a BST (30)C++题解2统计每一层节点个数
1130Infix Expression(25)C++题解2树的中序遍历和中缀表达式
1138Postorder Traversal (25)C++题解1
1143Lowest Common Ancestor (30)C++题解1
1151LCA in a Binary Tree(30)C++题解1

2、树的重建

编号标题题解难度等级备注
1020Tree Traversals (25)C++题解1
1043Is It a Binary Search Tree (25)C++题解1
1064Complete Binary Search Tree(30)C++题解1
1086Tree Traversals Again (25)C++题解1
1099Build A Binary Search Tree (30)C++题解1
1119Pre- and Post-order Traversals (30)C++题解1
1127ZigZagging on a Tree (30)C++题解1

3、平衡二叉树

编号标题题解难度等级备注
1066Root of AVL Tree (25)C++题解1
1123Is It a Complete AVL Tree (30)C++题解1
1135Is It A Red-Black Tree(30)C++题解1

十一、图(17题)

1、图遍历和连通分量

编号标题题解难度等级备注
1013Battle Over Cities (25)C++题解2图连通分量计数
1021Deepest Root (25)C++题解3树的最大深度
1034Head of a Gang (30)C++题解4图遍历
1076Forwards on Weibo (30)C++题解2图的BFS

2、最短路径

\quad 图的最短路径是常考题,在PAT里面属于最后一二题位置,难度较高。我对两种常见的最短路算法

  • 优先队列优化的Dijistra,无负权的情况下使用, O ( n + m ) l o g ( n ) O(n+m)log(n) O(n+m)log(n)
  • SPFA,有负权情况下使用, O ( k E ) O(kE) O(kE),k一般小于2,但可通过构造数据卡成 O ( V E ) O(VE) O(VE)

\quad PAT对时间复杂度要求很低,无需优化即可通过,甚至Floyd都能过,所以题解中我统一使用spfa,原因是spfa跟图的BFS写法差不多,写起来简单。
\quad 我在博客中对这两种最短路算法进行了解释并给出了模板,欢迎点击查看。

编号标题题解难度等级备注
1003Emergency (25)C++题解3最短路径+其他变量的更新(第二标尺)
1018Public Bike Management (30)C++题解4最短路径+DFS
1030Travel Plan (30)C++题解3最短路径+其他变量的更新(第二标尺)
1072Gas Station (30)C++题解3多个点的最短路
1087All Roads Lead to Rome (30)C++题解4最短路径+三个标尺层层更新
1111Online Map (30)C++题解3最短路径+两个尺度

3、新定义类型题

编号标题题解难度等级备注
1122Hamiltonian Cycle (25)C++题解1
1126Eulerian Path (25)C++题解1
1142Maximal Clique (25)C++题解1
1150Travelling Salesman Problem (25)C++题解1

4、拓扑排序

编号标题题解难度等级备注
1146Topological Order (25)C++题解1

5、最小生成树

十二、动态规划(4题)

编号标题题解难度等级备注
1007Maximum Subsequence Sum (25)C++题解2最大子序列和
1045Favorite Color Stripe (30)C++题解1
1068Find More Coins(30)C++题解1
1142Maximal Clique (25)C++题解1

十三、堆(2题)

编号标题题解难度等级备注
1047Heaps (30)C++题解1
1055Heap Paths (30)C++题解1

十四、并查集(3题)

编号标题题解难度等级备注
1107Social Clusters (30)C++题解1
1114Family Property (25)C++题解1
1118Birds in Forest (25)C++题解1

十五、树状数组(1题)

编号标题题解难度等级备注
1057Stack (30)C++题解1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值