PAT
化身孤岛的鲸o
我祈祷拥有一颗透明的心灵
展开
-
PAT顶级 1004 To Buy or Not to Buy - Hard Version (35分) dfs+剪枝
PAT顶级 1004 To Buy or Not to Buy - Hard Version (35分) dfs+剪枝题解:题意:题目要求是给出一个字符串s(一串珠子)(只包含数组和大小写字母),再给出n个字符串,我们要从这n个字符串中选取一些,这里我举个例子说明吧,就是假设s中有4个a,5个b,3个c,那么我们选取的字符串中a的总和要大于等于4,b的总和要大于等于5,c的总和要大于等于...原创 2020-02-13 20:25:14 · 364 阅读 · 0 评论 -
PAT甲级 1150 Travelling Salesman Problem (25分) 旅行商问题
PAT甲级 1150 Travelling Salesman Problem (25分) 旅行商问题题解:其实就是一个找环的题目。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#incl...原创 2020-03-07 23:09:33 · 265 阅读 · 0 评论 -
PAT甲级 1148 Werewolf - Simple Version (20分) 狼人杀(简单版) 暴力枚举
PAT甲级 1148 Werewolf - Simple Version (20分) 狼人杀(简单版) 暴力枚举题解:总共有两个狼人。题目说的很明显,说谎的肯定一个是狼人,一个是村民。所以我们只要暴力枚举那两个狼人即可,然后计算说谎的人数,当这个人数等于2且一个是狼人一个是村民时,就可以输出答案了。若没有答案,则输出“No Solution”代码如下:#include<i...原创 2020-03-07 21:43:00 · 398 阅读 · 0 评论 -
PAT乙级 1017 A除以B (20分) 简单高精度除法
代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<string>#include<vector>#define MAX 500005typedef long long ll;using nam...原创 2020-01-09 18:06:29 · 181 阅读 · 0 评论 -
PAT乙级 1008 数组元素循环右移问题 最大公约数和最小公倍数
题解:其实一个数组开大一点也可以过的,并没有限制空间==#include<iostream>#include<algorithm>#include<string>#include<stdio.h>using namespace std;int n,m,a[300];int main(){ scanf("%d%d",&am...原创 2020-01-08 22:55:38 · 251 阅读 · 0 评论 -
PAT甲级 1147 Heaps 判断一棵完全二叉树是否是堆
题目大意:给出一个完全二叉树的层序遍历,判断该二叉树是不是一个堆,若是一个堆,则判断是最大堆还是最小堆,并输出后序遍历题解:依次检查所有节点(除了根节点)和它的父节点的关系,判断是否破坏最大堆或者最小堆的性质,如果有不满足的情况将maxl或minnl置为0,以此排除最大堆或者最小堆。后序遍历直接套板子即可。代码如下:#include<iostream>#include&...原创 2020-01-07 13:45:54 · 1115 阅读 · 0 评论 -
PAT甲级 1146 Topological Order 拓扑排序
题目大意:给出一张图,再给出k个序列,判断每个序列是不是一个拓扑排序。Solution:当一个点出现的时候,它之前的点一定都出现过,也就相当于入度为0,我们用一个中间数组tin来存储每个点的入度,当从序列中读入一个点时,将它所指向的所有点的入度都减1,并判断此点的入度是否为0,若不为0,则说明不是拓扑序列代码如下://拓扑排序//当一个点出现的时候,它之前的点一定都出现过,也就相当...原创 2020-01-06 15:01:40 · 194 阅读 · 0 评论 -
1145 Hashing - Average Search Time (25分) 哈希表——平方探测法
题目大意:给出一个哈希表的长度t,若t不是质数,要把t变成大于t的最小质数。一个输入的序列,长度为n要查找的序列,长度为m求平均查找时间,使用平方探测法代码如下:#include<iostream>#include<vector>#include<stdio.h>#include<math.h>#define MAX 1000...原创 2020-01-06 00:12:54 · 557 阅读 · 0 评论 -
PAT甲级 1140 Look-and-say Sequence 字符串
代码如下://字符串#include<iostream>#include<stdio.h>#include<string>using namespace std;int d,n;int main(){ cin>>d>>n; int cnt=1; string last_s=""; las...原创 2019-11-16 00:13:20 · 225 阅读 · 0 评论 -
PAT甲级 1139 First Contact 图、邻接表、map
代码如下://图,邻接表,map#include<iostream>#include<vector>#include<map>#include<algorithm>#include<string>#include<cstdlib>#include<stdio.h>#include<ma...原创 2019-11-16 00:12:14 · 232 阅读 · 0 评论 -
PAT甲级 1138 Postorder Traversal 中序和前序转后序
代码如下://中序和前序转后序#include<iostream>#include<vector>#include<stdio.h>using namespace std;int in[50005],pre[50005];vector<int> post;void postorder(int root,int start,int...原创 2019-11-16 00:10:52 · 164 阅读 · 0 评论 -
PAT甲级 1137 Final Grading 模拟+排序
代码如下://模拟+排序#include<iostream>#include<algorithm>#include<string>#include<vector>#include<map>using namespace std;struct student{ string id; int p,mid,...原创 2019-11-16 00:10:05 · 193 阅读 · 0 评论 -
PAT甲级 1136 A Delayed Palindrome 字符串+模拟
代码如下:#include<iostream>#include<stdio.h>#include<string>#include<algorithm>using namespace std;bool judge(string s){ string rev_s=s; reverse(rev_s.begin(),rev_...原创 2019-11-16 00:08:47 · 173 阅读 · 0 评论 -
PAT甲级 1135 Is It A Red-Black Tree 红黑树
代码如下://红黑树#include<iostream>#include<stdio.h>#include<cmath>#define INF 0x3f3f3f3fusing namespace std;int tag1,minlen=INF,maxlen=-1,tag2;struct node{ int key; nod...原创 2019-11-16 00:07:30 · 232 阅读 · 0 评论 -
PAT甲级 1134 Vertex Cover 图的点覆盖问题
代码如下://图的点覆盖问题#include<iostream>#include<vector>using namespace std;struct edge{ int a; int b;};vector<edge> e;int main(){ int n,m; cin>>n>>m...原创 2019-11-16 00:06:10 · 203 阅读 · 0 评论 -
PAT甲级 1133 Splitting A Linked List 对链表操作
代码如下:#include<iostream>#include<vector>#include<stdio.h>using namespace std;struct node{ int key; int addr; int next;};vector<node> vec,res;node temp[10...原创 2019-11-16 00:05:05 · 199 阅读 · 0 评论 -
PAT甲级 1132 Cut Integer 模拟
代码如下://模拟#include<iostream>#include<string>using namespace std;int main(){ int n; string s[25]; cin>>n; for(int i=0;i<n;i++){ cin>>s[i]; }...原创 2019-11-16 00:03:47 · 157 阅读 · 0 评论 -
PAT甲级 1131 Subway Map 图的dfs
代码如下://图的dfs#include<iostream>#include<stdio.h>#include<vector>#include<cstring>#include<map>#define INF 0x3f3f3f3fusing namespace std;map<int,int> l...原创 2019-11-16 00:02:39 · 195 阅读 · 0 评论 -
PAT甲级 1130 Infix Expression 抽象语法树AST
代码如下://抽象语法树AST#include<iostream>#include<vector>#include<string>using namespace std;struct tree{ string key; int left,right;};vector<tree> t;int n;strin...原创 2019-11-15 23:58:49 · 197 阅读 · 0 评论 -
PAT甲级 1129 Recommendation System set集合
代码如下://set集合#include<iostream>#include<stdio.h>#include<set>#define MAX 50005using namespace std;struct node{ int key,cnt; bool operator < (const node a)const { if(c...原创 2019-11-15 23:57:03 · 173 阅读 · 0 评论 -
PAT甲级 1128 N Queens Puzzle 判断给出的图是否满足n皇后问题 思维
代码如下://思维#include<iostream>#include<vector>#include<cmath>using namespace std;int k;int main(){ cin>>k; int n; for(int p=0;p<k;p++){ bool flag...原创 2019-11-15 23:55:52 · 213 阅读 · 0 评论 -
PAT甲级 1127 ZigZagging on a Tree 层序蛇形遍历二叉树 中序+后序转层序
代码如下://层序蛇形遍历二叉树 中序+后序转层序#include<iostream>#include<stdio.h>#include<vector>#include<algorithm>using namespace std;int n;int in[35],post[35];struct node{ int k...原创 2019-11-15 23:53:46 · 206 阅读 · 0 评论 -
PAT甲级 1126 Eulerian Path 欧拉图、半欧拉图
代码如下://欧拉图、半欧拉图、dfs#include<iostream>#include<vector>#define INF 0x3f3f3f3fusing namespace std;int n,m;struct edge{ int a; int b;};struct node{ vector<int>...原创 2019-11-15 23:52:28 · 190 阅读 · 0 评论 -
PAT甲级 1125 Chain the Ropes 思维
代码如下://简单思维#include<iostream>#include<algorithm>using namespace std;int n;int a[10005];int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; }...原创 2019-11-15 23:49:52 · 145 阅读 · 0 评论 -
PAT甲级 1124 Raffle for Weibo Followers map+模拟
代码如下://模拟+map#include<iostream>#include<string>#include<vector>#include<map>using namespace std;int m,n,s;//m条转发,从第n个开始,每次跳过s个vector<string> vec,res;map<st...原创 2019-11-15 23:48:35 · 145 阅读 · 0 评论 -
PAT甲级 1122 Hamiltonian Cycle 汉密尔顿回路
代码如下://汉密尔顿回路#include<iostream>#include<stdio.h>#define MAX 205using namespace std;int n,m,k,num;int mp[MAX][MAX];int a[MAX];int main(){ cin>>n>>m; for(int...原创 2019-10-25 12:34:45 · 290 阅读 · 0 评论 -
PAT甲级 1121 Damn Single map
代码如下:#include<iostream>#include<stdio.h>#include<math.h>#include<vector>#include<map>#include<algorithm>using namespace std;int n,k,a[10005];map<int,i...原创 2019-10-25 12:33:23 · 249 阅读 · 0 评论 -
PAT甲级 1120 Friend Numbers set集合或者map
代码如下://map#include<iostream>#include<map>#include<vector>#include<stdlib.h>#define MAX 1000000using namespace std;int n,num;map<int,int> m;int cal(int x){ ...原创 2019-10-25 12:32:17 · 177 阅读 · 0 评论 -
PAT甲级 1123 Is It a Complete AVL Tree 完全平衡二叉树 (30分)
代码如下://平衡二叉树#include<iostream>#include<vector>#include<math.h>#include<queue>using namespace std;int max_index=-1;struct node{//结点 int key; node *left; ...原创 2019-10-24 21:35:38 · 220 阅读 · 0 评论 -
PAT甲级 1111 Online Map 单源最短路+DFS
题目大意:给出一张图有n个结点,m条边,每条边有自己的长度以及需要的时间(长度和时间没有必然联系),有些边是有向边,有些边是无向边,再给出起点和终点,我们要求出距离最短的路径和花费时间最少的路径,若两条路径距离相同,我们要选择花费时间最少的,若两条路径花费时间相同,我们要选择经过结点数最少的。如果最后要求的两条路径是相同的,我们只输出一条路径信息即可。代码如下://单源最短路+DFS...原创 2019-10-21 14:05:00 · 189 阅读 · 0 评论 -
PAT甲级 1110 Complete Binary Tree 判断一棵树是不是完全二叉树
题目大意:给出一棵二叉树,判断其是不是完全二叉树,若是,输出“YES”,并输出最后一个结点的编号,若不是,输出“NO”,并输出根结点的编号。思路:这道题既可以用BFS,也可以用DFS。BFS代码如下:#include<iostream>#include<algorithm>#include<math.h>#include<vector...原创 2019-10-21 13:58:38 · 157 阅读 · 0 评论 -
PAT 甲级 1108 Finding Average 模拟
题目大意:给出n个实数,但其中有一些是不合法的,我们需要求出所有合法的数的平均数,并打印出那些数是不合法的。代码如下://模拟#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<string>#include<...原创 2019-10-21 13:37:41 · 229 阅读 · 0 评论 -
PAT甲级 1093 Count PAT's 思维
Solution:题目大意:给出一个字符串s(只包含“P"“A”"T”),输出这个字符串包含多少个“PAT”。我们可以记录所有"A"出现的位置。同时用两个数组num_p,num_t记录每一个位置前面出现的“P”的个数以及每一个位置后面出现的"T"的个数。我们再根据记录的所有“A”的位置i,res+=num_p[i] * num_t[i]。代码如下://思维#include<i...原创 2019-09-11 00:34:10 · 174 阅读 · 0 评论 -
PAT甲级 1092 To Buy or Not to Buy map
代码如下://map的使用#include<iostream>#include<stdio.h>#include<string>#include<map>using namespace std;string s1,s2;map<char,int> m;int main(){ cin>>s1&g...原创 2019-09-10 23:53:37 · 159 阅读 · 0 评论 -
PAT甲级 1091 Acute Stroke 三维BFS
Solution:题目大意:给出一个三维的立方体,这个立方体可以看成由连续的点组成,整个立方体的体积为m x n x l,其中l为立方体的高。其中有些点的值为1,其余的点都为0。再给出一个常数t,我们要求出所有值为1的块(这些块的体积还要大于t,否则不算)的总体积。每个点的体积为1,所以我们取六个方向,然后找到一个值为1的点,不断bfs直到所有点都被访问。把所有块的体积加起来就可以了。代...原创 2019-09-10 23:35:00 · 180 阅读 · 0 评论 -
PAT甲级 1088 Rational Arithmetic 分数间的加、减、乘、除
代码如下://分数间的运算#include<iostream>#include<math.h>using namespace std;long gcd(long x,long y){//求最大公约数 x=fabs(x); y=fabs(y); if(y==0){ return x; }else{ ...原创 2019-09-09 22:13:28 · 166 阅读 · 0 评论 -
PAT甲级 1090 Highest Price in Supply Chain DFS+树
代码如下://树+DFS#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<iomanip>using namespace std;struct tree{ vector<int> child;...原创 2019-09-07 23:47:47 · 144 阅读 · 0 评论 -
PAT甲级 1089 Insert or Merge
代码如下://模拟插入排序和归并排序#include<iostream>#include<algorithm>#include<vector>using namespace std;int n;vector<int>init;//初始的数组vector<int>goal;//当前的数组vector<int&g...原创 2019-09-07 23:46:28 · 171 阅读 · 0 评论 -
PAT甲级 1155 Heap Paths DFS+树的层次遍历
Solution://DFS+树的层次遍历#include<iostream>#include<algorithm>#include<vector>using namespace std;struct tree{ int key; int left; int right; tree(){ le...原创 2019-09-07 23:44:24 · 177 阅读 · 0 评论 -
PAT甲级 1154 Vertex Coloring 顶点着色
Solution://顶点着色#include<iostream>#include<vector>#include<map>using namespace std;struct node{ int color; vector<int> edge;};int n,m;vector<node> vec...原创 2019-09-07 23:42:40 · 207 阅读 · 0 评论