
PAT甲级
Joey丶sunk
古今成大事者 不惟有超世之才 亦必有坚忍不拔之志
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2019年9月 PAT甲级考试满分题解
整场回顾:考前训练了不少,心情还是比较放松的,就告诉自己稳住心态,认真读题,不要钻牛角尖开始考试,发现整体题目还好,没有很复杂,就开始从头看:A题发现意思很简单,但是不是很好想,想了一会大致有了个方向,因为A数字+1会产生较大变化,最后一位必然是9,然后我寻思这A题应该更简单,等等再看有没有更简单的做法。然后看榜发现有俩哥们出了D题,然后出于自信我也直接去看D题,发现这场提很友好,题目...原创 2019-09-09 09:22:27 · 1676 阅读 · 0 评论 -
PAT 甲级 1014 Waiting in Line (30 分) (因题意问题的错误代码)
本文因题意问题是错误代码,正确代码见:https://blog.youkuaiyun.com/xiang_6/article/details/100135775#include<bits/stdc++.h>#include<cstring>#define FI first#define SE secondusing namespace std;typedef...原创 2019-08-29 13:18:11 · 386 阅读 · 0 评论 -
PAT 甲级 1134 Vertex Cover (25 分) set
题意:给定无向图,问一个点集是不是vertex cover思路:条件:1.点集的点为 0 ~ n-1 ;;2.无向图中所有边的两个点至少有一个在点集里把所有的边保存起来,用set存给定的点集#include<bits/stdc++.h>#include<cstring>#define FI first#define SE second...原创 2019-08-29 10:28:21 · 149 阅读 · 0 评论 -
PAT 甲级 1135 Is It A Red-Black Tree (30 分) 指针建树+dfs
马一下,,,这个题真滴蠢ps:红黑树的叶子结点省略了,全是NULL,先序遍历的时候不会输出#include<bits/stdc++.h>#include<cstring>#define FI first#define SE secondusing namespace std;typedef long long ll;typedef pair<s...原创 2019-08-28 23:34:04 · 216 阅读 · 0 评论 -
PAT 甲级 1139 First Contact (30 分) map+vector
题意:A,C是同性,,,B,D 是异性 ,,现在A看上了B,要给B写信,但是不能直接给B,然后找到了同性的朋友C,让C给C的朋友D,再由D转交给B,,这时候D也得是B的朋友给定A和B,问这样的C,D有多少,并输出思路:朋友关系用邻接表储存,每个人的同性别的朋友用vector存起来然后每次分别遍历A,B的同性别朋友c,d,,,然后判断c,d是不是朋友关系,...原创 2019-08-23 00:05:10 · 665 阅读 · 0 评论 -
PAT 甲级 1140 Look-and-say Sequence (20 分) 模拟
题意:先给一个数D(看作字符串)然后每次变化时把这个字符串中 字符相同的连续一段映射成两个信息加入新的串这两个信息为: 相同的这个字符,这个字符的数目D -> D1D1 -> D1 11D111 -> D1 13D113 -> D1 12 31D11231-> D1...原创 2019-08-21 23:39:58 · 219 阅读 · 0 评论 -
PAT 甲级 1141 PAT Ranking of Institutions (25 分) 结构体排序
题意:给定一些参赛选手的 竞赛级别,成绩,学校信息,然后以学校为的单位进行排序,每个学校包含:名称,总成绩(加权,如题),学生人数思路:用map将学校映射成id,然后记录分数,人数没看到学校去分数的时候是取小数的整数部分,搞了好久。。。#include<bits/stdc++.h>#include<cstring>#define F...原创 2019-08-21 23:34:41 · 165 阅读 · 0 评论 -
PAT甲级 1142 Maximal Clique (25 分) 暴力
题意:给定无向图,再给一个点集,问是不是 MC,C,或者两者都不是思路:1142Maximal Clique(25分)C就是给定的点集中任意两个点直接相连MC就是不存在其他点,跟点集中的所有点相连MC 包含于C 这样的关系应当先判断两者都不是的情况#include<bits/stdc++.h>#include<cstring>...原创 2019-08-21 23:30:59 · 236 阅读 · 0 评论 -
PAT甲级 1143 Lowest Common Ancestor (30 分) 建树+暴力查找lca
题意:给定一棵二叉排序树,问任意两个点的 lca 情况思路:根据规则建树,结构体存每个结点以及其深度,父亲节点每次寻找lca的时候,先让待查找点同层次,然后直接暴力往上寻找他们的lca,当找到同一个结点的时候就是lcaps:时间复杂度飘过,还有倍增lca,预处理每个结点的祖先结点情况,这里就不赘述了。一帮pat的题暴力都ok#include<bits/s...原创 2019-08-21 23:26:55 · 262 阅读 · 0 评论 -
PAT甲级 1008 Elevator (20 分)
直接循环,记录上个位置#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;const int maxn = 100 + 7;typedef long long ll;/*3 5 153 6 182 4 8 = 41----ok...原创 2019-08-13 00:08:56 · 100 阅读 · 0 评论 -
PAT甲级 1005 Spell It Right (20 分) string+map
string map 简单应用#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;const int maxn = 100 + 7;typedef long long ll;const int INF = 0x7f7f7f7f;string s;map<...原创 2019-08-13 00:05:10 · 180 阅读 · 0 评论 -
PAT 甲级 1014 Waiting in Line (30 分) queue+(附题意问题错误代码)
题意:银行有n个窗口,每个窗口最多可以有m个人排队;(!!!注意:这些人不是按照顺序自己随便选窗口的,只能按照顺序从窗口1-n排)如果n个窗口排满的话,剩下的人要站在黄线后面,等到有窗口队列不满的时候,再挨个过去排队;过去排队的时候优先选队列人数少的,人数少的一样的话选标号小的窗口思路:用队列表示窗口的队列,队列里面存的是每个人结束的时间,a[] 表示每个人办业务时间,b[]表...原创 2019-08-29 13:19:26 · 459 阅读 · 0 评论 -
PAT 甲级 1123 Is It a Complete AVL Tree (30 分) AVL+层次遍历
感动!从没看过AVL的代码,自己通过对四种平衡方式的理解,然后把代码写出来了题意:创建一颗AVL树,输出层次遍历序列,并判断是不是完全二叉树思路:本题难点就是AVL建树过程;结构体存树的结点,包含值,左孩子高度,右孩子高度;左孩子,右孩子指针。一共有四种平衡方式,详见概念以及代码详细的讲解:https://blog.youkuaiyun.com/xiang_6/arti...原创 2019-08-31 23:29:45 · 200 阅读 · 0 评论 -
PAT甲级1129
重载运算符,set有自动排序功能,还能log级别查找出来删除更新#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;typedef long long ll;typedef pair<int, int> P;const int maxn = 1e5 ...原创 2019-09-06 21:24:12 · 239 阅读 · 0 评论 -
PAT 甲级 1043 Is It a Binary Search Tree (25 分) 假设法
题意见:https://blog.youkuaiyun.com/xiang_6/article/details/100535189思路:这个解法比上一个简单,上一个解法要分类型,找分割点,要想挺多这个解法就是假设给定的先序遍历符合两种类型的bst中的一种,然后按照两种树的的方式分别建树,中间不合法的情况标记出来,最后看符合那种类型的树,输出#include<bits/s...原创 2019-09-04 11:29:43 · 264 阅读 · 0 评论 -
PAT 甲级 1043 Is It a Binary Search Tree (25 分) 递归建树+子树类型
题意:给定一棵树的先序遍历,问是不是BST 或者MirrorImage; 是的话输出后序遍历思路:BST 和Mirror Image 都有一个性质,就是可以通过先序遍历把树建出来,因为对于一个先序遍历,第一个点是当前树的根结点,①如果有两颗子树的话,那后面必然分成两段,一段值全部小于根结点的值,另一段全部大于根结点的值;②如果只有一颗子树的话,要么全大于根结点的值要么全小于根结...原创 2019-09-04 11:13:00 · 169 阅读 · 0 评论 -
PAT 甲级 1038 Recover the Smallest Number (30 分) 贪心排序
题意:给定n个字符串,只包含数字,用所有的字符串组成一个大的字符串,要求去掉前导零后字典序最小思路:经典贪心问题,不是简单的按照字典序排序,因为两个字符串长度不同会影响他们组合后的字典序,对于两个字符串s,t, 通过比较st 和 ts 的字典序,就能知道他们顺序了#include<bits/stdc++.h>#include<cstring&...原创 2019-09-03 14:14:29 · 162 阅读 · 0 评论 -
PAY 甲级 1087 All Roads Lead to Rome (30 分) dij最短路
最短路问题题意:给定n个点m条边的无向图,找一条最短路径,距离一样的话找路径总happy值(每个点有一个happy值)最大的,如果happy一样大的话,找平均happy值最大的(也就是经过的点尽量少的)思路:使用n² 的 dijstra算法,d[i][] 数组的第一维表示当前点i,第二维分别表示(带初始化): d[i][0] = INF; // dis ...原创 2019-09-03 12:21:58 · 170 阅读 · 0 评论 -
PAT 甲级 1135 Is It A Red-Black Tree (30 分) 结构体数组建树+dfs
node结构体数组建树写法指针建树及题意思路详见:https://blog.youkuaiyun.com/xiang_6/article/details/100128763#include<bits/stdc++.h>#include<cstring>#define FI first#define SE secondusing namespace std;t...原创 2019-09-02 22:57:43 · 208 阅读 · 0 评论 -
PAT 甲级 1045 Favorite Color Stripe (30 分) dp-最长公共子序列
题意:给定一个喜爱的颜色序列,从另一个系列中切取若干段,不同颜色的顺序必须跟喜爱的颜色序列顺序相同思路:经典LCS的变种,dp[i][j] 表示s序列到达i位子,t序列到达j位置的最长公共子序列长度在经典问题中:s[i] == t[j] 时,dp[i][j] 只能由dp[i-1][j-1]转移来,但是对于本题,把s序列看成喜爱的颜色序列,dp[i][j] 还可以由dp[i][j-1...原创 2019-09-02 22:53:45 · 202 阅读 · 0 评论 -
PAT 甲级 1033 To Fill or Not to Fill (25 分) 加油站问题-贪心
题意:一个人要从0位置开车到D位置,开始车里没有油,路上有一些加油站可以任意加油,但是油有不同的价格问能不能到达D位置,能到达的话输出最小花费,不能到达输出最远到达距离思路:从开始位置加油,往后走,但是加多少油我们不确定,因为假如后面有一个加油站的油便宜,那我们到这个加油站加油,走后面的路程就会花费更小,前提是我们能到这样的加油站;如果当前加油站加满能到达的后面的加油站油价都大...原创 2019-09-02 21:39:48 · 357 阅读 · 0 评论 -
PAT 甲级 1067 Sort with Swap(0, i) (25 分) 并查集
并查集,把位置集合跟数集合一直的建立分组不包含0的集合要以0为跳板,交换次数为集合大小+1;包含0的集合只要把其余元素归位就欧克了#include<bits/stdc++.h>using namespace std;const int maxn = 1e5 + 7;int n, u;int f[maxn], cnt[maxn];void init() ...原创 2019-09-02 00:42:04 · 127 阅读 · 0 评论 -
PAT 甲级 1066 Root of AVL Tree (25 分) AVL入门讲解
题意:AVL建树,输出根节点思路:AVL建树过程中四种平衡方式是难点,但是理解之后就可以比较容易的写出来了node结构体表示树的结点,存储:值,左右子树高度;左孩子,右孩子;其中LL型跟RR型相似的写法;LR型RL型写法比较相似;下面讲解一下LL型和LR型:LL型:设当前不平衡结点为根节点,(左孩子的左子树更大所谓LL型),这时候根据BST性质,需要调整根节点以及根节点...原创 2019-09-01 23:59:55 · 185 阅读 · 0 评论 -
PAT甲级 1011 World Cup Betting (20 分)
直接选大小#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;typedef long long ll;const ll maxn = 1e8 + 7;double a1, a2, a3;double b1, b2, b3;double c1, c2, ...原创 2019-08-13 00:03:16 · 145 阅读 · 0 评论 -
PAT甲级 1149 Dangerous Goods Packaging (25 分) map+set
题意:给定n对排斥关系,后面m个询问,问给定的t个数之间是不是存在排斥关系,存在输出No,否则输出Yes思路:首先把排斥关系存起来,为了减小空间,用map将标号离散化,排斥关系用set存,方面后面查找#include<bits/stdc++.h>#include<cstring>#define FI first#define SE second...原创 2019-08-15 23:21:26 · 225 阅读 · 0 评论 -
PAT甲级 1007 Maximum Subsequence Sum (25 分)
题意:给定长度为n的序列,寻找最大字段和,按要求输出思路:滑动窗口,当前子段sum>=0时,右指针一直往右边滑动,如果当前序列sum变成的负数,那就把左指针往右滑动,直到序列sum变成非负数或者序列变空了;ps:如果最大子段和为负,如下操作:"If all theKnumbers are negative, then its maximum sum is defin...原创 2019-08-10 16:13:46 · 296 阅读 · 0 评论 -
PAT甲级 1016 Phone Bills (25 分)
很久没写模拟题了,,写的很蠢马一下,待整理。。。ZZZ#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;typedef long long ll;typedef pair<string, string> P;const int maxn = 1...原创 2019-08-13 23:36:30 · 208 阅读 · 0 评论 -
PAT甲级 1015 Reversible Primes (20 分)
题意:给定一个十进制下的数n,然后在d进制下反转得到一个数如果这两个数都是素数Yes,,否则No思路:如上#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;typedef long long ll;const ll maxn = 1e8 + 7;...原创 2019-08-13 21:49:11 · 227 阅读 · 0 评论 -
PAT甲级 1153 Decode Registration Card of PAT (25 分)
时间给的很紧需要提前把可以预处理的东西搞出来#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;const int maxn = 1e4 + 7;typedef long long ll;int n, m;struct node { string...原创 2019-08-08 23:29:27 · 245 阅读 · 0 评论 -
PAT甲级 1154 Vertex Coloring (25 分) 图
题意:给定一张图,每个结点有个颜色,相连两个结点颜色不同是color图,这样的图用了k种颜色答案就是k-coloring否则就是No思路:用vector数组存图,set存颜色#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;const int ...原创 2019-08-07 23:20:28 · 155 阅读 · 0 评论 -
PAT甲级 1155 Heap Paths (30 分) 数组存树-bfs存树中id
题意:按照从右边层次遍历的方式给定一棵二叉树,输出根结点到每个叶子结点的路径,并判断是不是大小堆思路:用数组保存树,空结点用INF(所给的数值不等于INF)表示,用队列储存给定顺序的每个数在树中的id然后dfs遍历整棵树,顺便判断是否满足大小堆的条件#include<bits/stdc++.h>#define FI first#define SE sec...原创 2019-08-07 22:47:47 · 163 阅读 · 0 评论 -
PAT甲级 1004 Counting Leaves (30 分) 树
题意:给定一棵树,输出每一层的叶子节点思路:每个结点有个ID,用string储存,然后用vector储存其孩子以便dfs遍历;用map关联dfs跑一遍树,记录(更新)答案即可;ps:有一组数据n=0,应该直接跳过。#include<bits/stdc++.h>#define FI first#define SE secondusing names...原创 2019-07-25 22:10:35 · 164 阅读 · 0 评论 -
PAT甲级 1006 Sign In and Sign Out (25 分) 字符串排序
题意:找到最早sign in最晚signout的人思路:时间早晚比较可以转化成字符串,然后用Pair将人的ID和时间存入vector,按时间排序输出#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;const int maxn = 500 +...原创 2019-07-29 22:58:40 · 163 阅读 · 0 评论 -
PAT甲级 1003 Emergency (25 分) 最短路更新
题意:给定一个包含n个点m条边的无向图,每个结点有一个权值(a[]数组保存),寻找C1到C2的最短路问:不同的最短路的条数和所有最短路中权值和最大是多少;思路:利用dijstra算法。首先在求最短路的时候需要设定一个d[]数组,d[i]表示从C1出发到达i点的最短距离,然后每次取出集合外最优值进行更新;这时候我们还需要两个数组cnt[], sum[];cnt[i]...原创 2019-07-29 22:42:28 · 142 阅读 · 0 评论 -
PAT甲级 1002 A+B for Polynomials (25 分)
数组模拟多项式加法#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;const int maxn = 1000 + 7;typedef long long ll;typedef pair<int,int> P;double ans[maxn]...原创 2019-05-14 10:03:07 · 175 阅读 · 0 评论 -
PAT甲级 1009 Product of Polynomials (25 分)
多项式乘法#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;const int maxn = 100 + 7;typedef long long ll;struct node{ int x; double y;}a[maxn], b[max...原创 2019-08-10 17:33:28 · 129 阅读 · 0 评论 -
PAT 甲级 1151 LCA in a Binary Tree (30 分) 先序中序遍历求LCA
题意:给定一棵二叉树,求两个点的LCA(最近公共祖先)思路:大赞柳姐姐的博文,一眼就看到了这种求LCA的方法! 聪明 机智 温柔 活泼 可爱 伶俐 宇宙超级无敌萌萌哒 天才少女小柳柳~~~ 爱了爱了这个方法就是根据先序遍历中序遍历建树的过程,如果两个结点在当前树的根节点的两测,那他们的LCA就是当前结点; 如果当前树的根节点就是两个结点中的一个,那当前结点就是另一个的祖先...原创 2019-08-19 23:33:48 · 190 阅读 · 0 评论 -
PAT甲级 1148 Werewolf - Simple Version (20 分)
题意:狼人杀,n个玩家,其中两个狼人,只有一个说了假话,n个人中一共两个人说了假话思路:枚举狼人是谁,mp,1表示人,-1表示狼; 然后check一下,把说谎的人标记,检查是否符合题目要求#include<bits/stdc++.h>#include<cstring>#define FI first#define SE secondusin...原创 2019-08-15 22:40:07 · 150 阅读 · 0 评论 -
PAT甲级 1152 Google Recruitment (20 分)
#include<bits/stdc++.h>#define FI first#define SE secondusing namespace std;typedef long long ll;int n, k;string s;bool is_p(int n) { if(n == 0 || n == 1) return false; ...原创 2019-08-15 21:34:00 · 156 阅读 · 0 评论 -
PAT 甲级 1144 The Missing Number (20 分) 暴力+set
直接暴力#include<bits/stdc++.h>#include<cstring>#define FI first#define SE secondusing namespace std;typedef long long ll;typedef pair<int, int> P;const int maxn = 1000 + 7...原创 2019-08-20 23:53:43 · 274 阅读 · 0 评论