
PAT
adventural
这个作者很懒,什么都没留下…
展开
-
PAT1005 Spell It Right
题解 原题链接 这题比较简单,字符串输入,然后每一项求和,求和结果一定在1000以内就分别讨论然后switch case输出对应英文字母就可以了 AC代码 #include <iostream> #include <cstdio> using namespace std; void print(int a); int main() { string s; ...原创 2019-01-31 12:21:14 · 265 阅读 · 0 评论 -
PAT 1019 General Palindromic Number—回文数
题解 原题链接 开一个数组保存N在当前进制b下的每一项,判断左右是否相等 #include <cstdio> using namespace std; int main() { int N, b, a[40], len=0; bool ispa = true; scanf("%d %d",&N,&b); while(N != 0) ...原创 2019-02-07 22:14:03 · 122 阅读 · 0 评论 -
Dijkstra算法 —PAT甲级 1003 Emergency题解
1003 Emergency 原题链接 开两个数组分别记录到当前顶点最短路径条数以及最大权值和,Dijkstra更新最短路径的时候分别更新这两个数组(讨论两种情况) 注意点: 存在起始点和结束点相同的情况,这种情况路径数需要输出1(测试点1) 路是双向的,所以题目中给的图是无向图(没有注意到这一点的会卡测试点2和5) AC代码 #include &lt;iostream&gt; #includ...原创 2019-01-30 21:37:58 · 1133 阅读 · 0 评论 -
PAT甲级 1004 Counting Leaves——并查集应用
Counting Leaves 原题链接 题目描述: 给你一个家族树,要求你输出树的每一层中叶子节点个数,数据范围(1—99)。 思路如下: 申请一个大小为100的数组,对于每个输入构造并查集,循环一次即可得到每一个节点的层次; 申请一个大小为100的bool型数组,初值为false,有后代时设置为true(区分叶子节点) 最后再次循环把叶子节点按层次计数输出即可 AC代码 #include ...原创 2019-01-30 23:01:08 · 160 阅读 · 0 评论 -
PAT 1021 Deepest Root
1021 Deepest Root (25 分) A graph which is connected and acyclic can be considered a tree. The hight of the tree depends on the selected root. Now you are supposed to find the root that results in a hi...原创 2019-02-17 15:46:11 · 172 阅读 · 0 评论 -
PAT 1022 Digital Library(map的使用)
题解 题目过长直接放原题链接 这一题使用map就可以过,注意一点就是id是一个七位数字,可能出现000001这样0开头的情况,输出的时候应该使用printf("%07d\n",*id)补足七位,没注意到的最后两个会报错,还有一点就是Query 函数的参数如果不使用地址的话可能会超时 #include &lt;iostream&gt; #include &lt;cstdio&gt; #include.原创 2019-02-17 21:48:49 · 176 阅读 · 0 评论 -
1023 Have Fun with Numbers简单的大整数乘法
1023 Have Fun with Numbers (20 分) Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happen...原创 2019-02-17 22:35:11 · 173 阅读 · 0 评论 -
PAT 1028 List Sorting自定义比较函数
这题比较简单,结构体存放三个数据,根据C的不同选择比较函数,sort 原题链接 #include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct Stu { int id; string name; int grade; }st...原创 2019-02-27 22:50:34 · 157 阅读 · 0 评论 -
PAT 1020 Tree Traversals根据中序,后序遍历结果重新建树
1020 Tree Traversals Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversa...原创 2019-02-13 11:40:02 · 287 阅读 · 0 评论 -
1025 PAT Ranking
这题一开始看错了,当搜索题做的,思路是建一个二维数组,大小为102的数组每一项用来保存分数小于等于自己下标的人数,也就是0-100项,最后一项保存参与排名的人数,因为是按搜索题做的,最后遍历了一遍map,输出。最后一个测试点大概100ms左右,参考其他常规使用sort排序大概40-60ms 原题链接 代码如下 #include <iostream> #include <map&g...原创 2019-02-24 16:21:41 · 162 阅读 · 0 评论 -
PAT 1029 Median
题解 题意就是给你两个排好序的增序序列,求两个序列合并后的中位数。 Input Specification: Each input file contains one test case. Each case occupies 2 lines, each gives the information of a sequence. For each sequence, the first positi...原创 2019-02-28 18:08:19 · 165 阅读 · 0 评论 -
PAT 1018 Public Bike Management —Dijkstra+dfs筛选
题解 原题链接 这题我一开始没读懂题意,其实题目意思是这样的,给你一个需要调整的位置然后你需要找一条从PBMC(0位置点)到给定位置的最短路径,这个最短路径可能有多条 注意点: 从PBMC到给定位置,其路径所经过点都需要调整到perfect 不能返回的时候再调整,多的自行车可以带回 最短路径有多条的时候优先选择从PBMC带出自行车最少的那一条,如果还有多条就选择最终返回所带自行车数目最少的,题目...原创 2019-02-07 16:07:32 · 242 阅读 · 0 评论 -
PAT 1017 Queueing at Bank—优先队列模拟
题解 原题链接 用两个优先队列,一个存储顾客到达时间,另一个存储窗口空闲时间点 #include &lt;iostream&gt; #include &lt;queue&gt; #include &lt;cstdio&gt; #define MIN 8*60*60 #define MAX 17*60*60 #define tosec(a,b,c) a*60*60+b*60+c using n原创 2019-02-06 17:32:32 · 178 阅读 · 0 评论 -
PAT 1015 Reversible Primes—判断素数
题解 原题链接 题目大意,给你一个10进制的数N和一个进制D,如果N是素数且N在进制D下的“reverse”也是素数则输出Yes,否则输出No; 样例分析: 23 2 23 在2进制下的数字是10111,“reverse”以下就是11101,也就是10进制下的29,23与29都是素数,输出Yes 解题思路:找到N在进制D下对应的数然后检查两个是不是都是素数,这里检查的方法是用的素数表 AC代码 #...原创 2019-02-05 21:44:21 · 152 阅读 · 0 评论 -
PAT 1006 Sign In and Sign Out
题解 原题链接 比较简单的想法,设置一个ulk和lk字符串保存开门和关门人的ID,变量ulk_time和lk_time保存当前开关门时间,N次读入,每次读入分别比较一下时间并更新变量,最后输出ulk和lk AC代码 #include <iostream> #include <cstdio> using namespace std; int main() { in...原创 2019-01-31 14:57:04 · 204 阅读 · 0 评论 -
PAT 1001 A+B Format
PAT甲级1001题 输入a,b求和,检查sum是否为负数,是则先输出“-”并abs(sum) 把sum的值存放在数组里面,并且设置一个标记数组 倒序输出(标记数组值为1就先输出“,”,然后再输出值) AC代码 #include <iostream> #include <cmath> using namespace std; int main() { int ...原创 2019-01-27 23:24:55 · 138 阅读 · 0 评论 -
PAT 1007 最大子段和——一般方法与动态规划法
题解 原题链接 这题是可以用分治法解的,但是比较麻烦要考虑最大子段出现在中间的情况并且要求输出第一个和最后一个元素,简单一点的方法是遍历一遍记录最大和以及始末元素位置,最后输出就可以了,下面的代码需要注意的是当最大子段和为0的时候(序列不全为负,例如:0 -1 -3 0 0),while循环里面不会记录元素下标(大于的时候才会更新,一直等于不会更新),所以需要最后加一个if判断一下 ps这题要看清...原创 2019-02-01 21:14:16 · 184 阅读 · 0 评论 -
PAT 1008 Elevator
这题很简单直接上代码 #include <iostream> using namespace std; int main() { int N, sum=0, lastnum=0, num; cin >> N; for (int i=0; i<N; i++) { cin >> num; if...原创 2019-02-01 21:37:12 · 104 阅读 · 0 评论 -
PAT 1009 Product of Polynomials——多项式相乘
题解 原题链接 这题数据范围比较小,直接数组模拟就行了 代码 #include <iostream> #include <cstdio> using namespace std; int main() { double a[1001] ={0}, b[1001]={0}, c[2001]={0}; int k, index,cnt=0; cin ...原创 2019-02-01 22:14:34 · 139 阅读 · 0 评论 -
PAT 1002 A+B for Polynomials——多项式相加
题解 原题链接 数组模拟即可,数组下标代表指数,里面的值代表系数 代码 #include <iostream> #include <cstdio> using namespace std; int main() { double a[1001] ={0}, b[1001]={0}, c[1001]={0}; int k, index,cnt=0; ...原创 2019-02-01 22:20:53 · 214 阅读 · 0 评论 -
PAT 1010 Radix——二分法
题解 原题链接 这一题的坑比较多,刚开始看到这题以为默认36进制以内,for循环一遍错了7、8个,实际上这个题的进制范围可以很大,但是当两个数都不为0时,一个数的进制不会超过另一个数的10进制表示(一个数不为0那么最小也是1,如果进制大于另一个数的10进制表示,那么两个数不可能相等) 这题的数据最好都用long long,int可能会溢出 进制是有下界的,比如说一个数的表示出现了‘a’,那么进制...原创 2019-02-02 21:50:39 · 219 阅读 · 0 评论 -
PAT 1011 World Cup Betting
简单题直接上代码 原题链接 #include <iostream> #include <cstdio> using namespace std; int maxindex(double a[]) { if (a[0]>a[1]&&a[0]>a[2]) return 0; else return ...原创 2019-02-02 22:05:50 · 145 阅读 · 0 评论 -
PAT 1012 The Best Rank
题解 原题链接 思路: 使用map完成id与数字1、2、3…之间的映射关系,grades[2001][3]保存成绩 成绩排名可以设置4个大小101的数组,数组值为成绩在数组下标之前的人数,如c[60]=10表示60分及以下的人数有10个,这样知道成绩之后拿N-c[成绩]就可以得到排名 AC代码 #include <iostream> #include <map> us...原创 2019-02-02 23:40:56 · 177 阅读 · 0 评论 -
PAT 1013 Battle Over Cities——求图的连通分支个数
题解 原题链接 题目翻译过来的意思就是给你一个无向图,删掉其中一个顶点然后让你求剩下的图的连通分支个数 求连通分支个数有以下两种方法: dfs,直到所有节点都被访问过,记录下dfs次数就是连通分支个数,删除顶点放在dfs里面加一个判断就可以了 并查集,但是这题涉及到删除一些边,没有dfs来的方便 ps:这题我一开始使用的cin读入,最后超时了一个,改为scanf才AC 代码(参考算法笔记) #...原创 2019-02-03 21:27:53 · 996 阅读 · 0 评论 -
PAT 1030 Travel Plan(Dijsktra算法)
题解 这题是Dijsktra算法的变形,更新节点的时候需要考虑花费(相当于有两个权值),当路径相同时花费优先选择花费少的,加一个判断即可 #include <cstdio> #include <vector> #include <algorithm> const int maxn=505; const int INF=100000000; using n...原创 2019-02-28 20:56:48 · 201 阅读 · 0 评论