![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 227 阅读 · 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 · 97 阅读 · 0 评论 -
Dijkstra算法 —PAT甲级 1003 Emergency题解
1003 Emergency原题链接开两个数组分别记录到当前顶点最短路径条数以及最大权值和,Dijkstra更新最短路径的时候分别更新这两个数组(讨论两种情况)注意点:存在起始点和结束点相同的情况,这种情况路径数需要输出1(测试点1)路是双向的,所以题目中给的图是无向图(没有注意到这一点的会卡测试点2和5)AC代码#include &lt;iostream&gt;#includ...原创 2019-01-30 21:37:58 · 1081 阅读 · 0 评论 -
PAT甲级 1004 Counting Leaves——并查集应用
Counting Leaves原题链接题目描述:给你一个家族树,要求你输出树的每一层中叶子节点个数,数据范围(1—99)。思路如下:申请一个大小为100的数组,对于每个输入构造并查集,循环一次即可得到每一个节点的层次;申请一个大小为100的bool型数组,初值为false,有后代时设置为true(区分叶子节点)最后再次循环把叶子节点按层次计数输出即可AC代码#include ...原创 2019-01-30 23:01:08 · 132 阅读 · 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 · 138 阅读 · 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 · 138 阅读 · 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 · 155 阅读 · 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 · 125 阅读 · 0 评论 -
PAT 1020 Tree Traversals根据中序,后序遍历结果重新建树
1020 Tree TraversalsSuppose 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 · 254 阅读 · 0 评论 -
1025 PAT Ranking
这题一开始看错了,当搜索题做的,思路是建一个二维数组,大小为102的数组每一项用来保存分数小于等于自己下标的人数,也就是0-100项,最后一项保存参与排名的人数,因为是按搜索题做的,最后遍历了一遍map,输出。最后一个测试点大概100ms左右,参考其他常规使用sort排序大概40-60ms原题链接代码如下#include <iostream>#include <map&g...原创 2019-02-24 16:21:41 · 142 阅读 · 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 · 133 阅读 · 0 评论 -
PAT 1018 Public Bike Management —Dijkstra+dfs筛选
题解原题链接这题我一开始没读懂题意,其实题目意思是这样的,给你一个需要调整的位置然后你需要找一条从PBMC(0位置点)到给定位置的最短路径,这个最短路径可能有多条注意点:从PBMC到给定位置,其路径所经过点都需要调整到perfect不能返回的时候再调整,多的自行车可以带回最短路径有多条的时候优先选择从PBMC带出自行车最少的那一条,如果还有多条就选择最终返回所带自行车数目最少的,题目...原创 2019-02-07 16:07:32 · 204 阅读 · 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+cusing n原创 2019-02-06 17:32:32 · 148 阅读 · 0 评论 -
PAT 1015 Reversible Primes—判断素数
题解原题链接题目大意,给你一个10进制的数N和一个进制D,如果N是素数且N在进制D下的“reverse”也是素数则输出Yes,否则输出No;样例分析:23 223 在2进制下的数字是10111,“reverse”以下就是11101,也就是10进制下的29,23与29都是素数,输出Yes解题思路:找到N在进制D下对应的数然后检查两个是不是都是素数,这里检查的方法是用的素数表AC代码#...原创 2019-02-05 21:44:21 · 126 阅读 · 0 评论 -
PAT 1006 Sign In and Sign Out
题解原题链接比较简单的想法,设置一个ulk和lk字符串保存开门和关门人的ID,变量ulk_time和lk_time保存当前开关门时间,N次读入,每次读入分别比较一下时间并更新变量,最后输出ulk和lkAC代码#include <iostream>#include <cstdio>using namespace std;int main(){ in...原创 2019-01-31 14:57:04 · 176 阅读 · 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 · 108 阅读 · 0 评论 -
PAT 1007 最大子段和——一般方法与动态规划法
题解原题链接这题是可以用分治法解的,但是比较麻烦要考虑最大子段出现在中间的情况并且要求输出第一个和最后一个元素,简单一点的方法是遍历一遍记录最大和以及始末元素位置,最后输出就可以了,下面的代码需要注意的是当最大子段和为0的时候(序列不全为负,例如:0 -1 -3 0 0),while循环里面不会记录元素下标(大于的时候才会更新,一直等于不会更新),所以需要最后加一个if判断一下ps这题要看清...原创 2019-02-01 21:14:16 · 155 阅读 · 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 · 81 阅读 · 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 · 113 阅读 · 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 · 182 阅读 · 0 评论 -
PAT 1010 Radix——二分法
题解原题链接这一题的坑比较多,刚开始看到这题以为默认36进制以内,for循环一遍错了7、8个,实际上这个题的进制范围可以很大,但是当两个数都不为0时,一个数的进制不会超过另一个数的10进制表示(一个数不为0那么最小也是1,如果进制大于另一个数的10进制表示,那么两个数不可能相等)这题的数据最好都用long long,int可能会溢出进制是有下界的,比如说一个数的表示出现了‘a’,那么进制...原创 2019-02-02 21:50:39 · 193 阅读 · 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 · 117 阅读 · 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 · 154 阅读 · 0 评论 -
PAT 1013 Battle Over Cities——求图的连通分支个数
题解原题链接题目翻译过来的意思就是给你一个无向图,删掉其中一个顶点然后让你求剩下的图的连通分支个数求连通分支个数有以下两种方法:dfs,直到所有节点都被访问过,记录下dfs次数就是连通分支个数,删除顶点放在dfs里面加一个判断就可以了并查集,但是这题涉及到删除一些边,没有dfs来的方便ps:这题我一开始使用的cin读入,最后超时了一个,改为scanf才AC代码(参考算法笔记)#...原创 2019-02-03 21:27:53 · 849 阅读 · 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 · 174 阅读 · 0 评论