自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 几位数问题

几位数给定一个数,输出其是几位数import sysimport mathwhile True: line = sys.stdin.readline() if not line: break num = int(line) t = 0 while True: if num // pow(10,t): t = t + 1 else: break print(

2021-11-02 19:11:10 171

原创 A+B Problem

A+B Problemimport syswhile True: line = sys.stdin.readline() if not line: break a,b = (int(x) for x in line.split()) print(a + b) 输入要求一行一行输入数据,没有规定输入多少行,说明需要自己判断文件结束EOF,否则会Runtime Error如果是C/C++,直接判断!=EOF,python中没有这种操作,

2021-11-02 18:37:25 126

原创 PAT 甲级1021 Deepest Root

PAT 甲级1021 Deepest Root给定N个节点和N-1条边,找到其中的最深根节点——该根节点使整个树的深度最大先判断该图是否是一颗树,即判断连通分量个数,如果连通分量个数大于1,则说明出现了循环图,不能构成树如果联通分量为1,就要找最深根节点,需要两次dfs。第一次dfs从任意节点出发,**找到深度最大的叶子节点们,**然后从这些叶子节点中任意选择一个,开始dfs,再次找到深度最大的叶子节点们。最终结果是两次dfs结果的 并集——使用set// 1021 Deepest Root.c

2021-07-23 21:15:14 181

原创 PAT 甲级 1020 Tree Traversals

PAT 甲级 1020 Tree Traversals给定二叉树的后序和中序遍历,输出二叉树的层序遍历(二叉树每个节点的值不同)用index记录树中每个节点所在的位置,从0开始用map记录节点信息,index为key,这样map自动从0开始排序,只需迭代输出map存储的值即可完成层序遍历后序遍历的最后一个节点是子树的根节点,通过根节点的值,可在中序遍历中把子树分为左子树和右子树后序遍历中左子树的根节点位置为root-(end - i + 1),即根节点位置-(右子树节点个数 + 1)后序遍历中右

2021-07-23 21:14:39 140

原创 PAT 甲级 1019 General Palindromic Number

PAT 甲级 1019 General Palindromic Number水题,把数字转换成对应进制,从两头往中间找,看是否对齐n==0是直接输出Yes和0// 1019 General Palindromic Number.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>using namespace std;int main(){ int n, b; cin >> n >

2021-06-12 16:43:48 81

原创 PAT 乙级 1045 快速排序

PAT 乙级 1045 快速排序暴力法来做会超时。用向量ab来保存原序列,对a进行排序,然后进行遍历如果a[i] == b[i] 并且b[i]大于它左边的最大值,那么b[i]一定是主元(画两个向量,很好理解)// 1045 快速排序.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <algorithm>#include <vector>#define maxN 1000

2021-06-09 20:46:40 94

原创 PAT 1018 Public Bike Management

PAT 1018 Public Bike Management不会写,看了别人的思路先用dijstra保存从PBMC(0结点)到sp节点的最短路径,重点是记录最短路径上的前驱节点因为最短路径可能不止一条,所以一个节点的前驱节点可能不止一个, 所以要用一个vector来为每个节点维护前驱节点记录前驱节点后,从sp节点开始向0节点进行dfs遍历,当从sp节点遍历到0节点时,找到了一条最短路径,计算这条路径上的need和back,并更新minneed和minback。#include <iostr

2021-06-09 16:49:33 76

原创 PAT 甲级 1017 Queueing at Bank

PAT 甲级 1017 Queueing at Bankn个人,k个窗口,要计算所有人的平均等待时长,我们让优先级队列记录每个人的结束时间,按最小堆排序,这样每次出队列的都是最早结束的。插入节点前判断一下,如果当前队首时间小于插入时间,说明该窗口空闲,插入即可。否则说明需要等待,记录等待时间q.top() - v[i].come// 1017 Queueing at Bank.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream&g

2021-06-09 10:06:34 69

原创 PAT 甲级 1016 Phone Bills

PAT 甲级 1016 Phone Bills用结构体node保存一次call的人名、月、日、小时、分钟信息因为要按人名输出,然后每个人名下按时间先后输出,所以我们需要给所有call进行排序,排序先按人名大小非降序排序,然后按时间先后排序排序后,只要容器中前一个是on-line, 后一个是off-line,就是一次well paired让人名为key,人名下的call的序列(排好序)为值,建立map计算费用的方法根据每个时间hh:mm:nn,计算从00:00:00到它的费用某个时间段的费用 即

2021-06-08 22:02:07 110

原创 PAT 甲级 1015 Reversible Primes

PAT 甲级 1015 Reversible Primes把数字的每一位保存在容器中,判断该容器保存的数字是否是素数反转容器,判断该容器保存的数字似乎是素数两次都返回true才输出Yes 否则输出no判断素数:i从2到sqrt(num)(包括) 判断num能否为i整除注意要判断当num = 1时,返回false,否则无法通过测试点1// 1015 Reversible Primes.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <io

2021-06-05 16:26:41 239 1

原创 PAT 1014 1014 Waiting in Line

PAT 1014 1014 Waiting in Line队列问题,一个窗口对应一个队列// 1014 Waiting in Line.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <queue>#include <vector>#include <iomanip>using namespace std;struct node{ int pop

2021-06-05 15:27:27 100

原创 PAT 甲级 1013 Battle Over Cities

PAT 甲级 1013 Battle Over Cities无向图、连通分量、dfs首先构造一个无向图,然后去掉一个节点和与其连接的边,输出剩余节点生成连通图需要添加的边数。可知要把n个连通分量生成连通图所需的边数为n-1,我们只需要求出去掉某个节点之后剩余的联通分量数例子中去掉1则2 3都是连通分量,所需边数为2-1=1;去掉2或3剩余的连通分量数都是1,所需边数为1-1=0;每次从一个未访问过的节点出发,可以遍历一个连通分量,将该分量上的每个节点都置为访问过// 1013 Battle O

2021-06-03 14:35:39 62

原创 PAT 甲级 1012 The Best Rank

PAT 甲级 1012 The Best Rank要识别每个同学排名最高的学科或平均分,输出其排名及学科。创建一个结构体,包括id,保存四科成绩的score数组,四科排名的rank数组, best因为在同等排名下,学科的优先级为A—C—M—E,所以CME的成绩保存在score的1到3,让score[0]保存A首先从A开始,依次按学科成绩对学生排序,这样排在首位的,该科成绩最好。然后对该学科下的其余n-1个学生,依次计算他们本学科的排名。这样结束后,就得到所有学生所有学科的排名。再顺序搜索,找出每个

2021-06-02 15:51:34 98

原创 PAT 甲级 1011 World Cup Betting

PAT 甲级 1011 World Cup Betting在矩阵里找每行最大值输出即可// 1011 World Cup Betting.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <iomanip>using namespace std;double a[3][3];int main(){ char bet[3] = { 'W', 'T', 'L' }; i

2021-06-02 10:51:44 75

原创 PAT 甲级1010 Radix

PAT 甲级1010 Radix确定要求的进制的边界,数字值随进制值单调增加,所以可用二分查找提高效率// 1010 Radix.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <algorithm>#include <cmath>using namespace std;long long convert(string n, long long radix) {

2021-06-02 10:25:57 134

原创 PAT 甲级 1009 Product of Polynomials

PAT 甲级 1009 Product of Polynomials多项式乘法注意相乘后相加的系数可能为0熟悉map的排序#include <iostream>#include <map>#include <iomanip>#include <algorithm>using namespace std;struct cmp { bool operator() (const int& x, const int& y)c

2021-06-01 16:37:20 66

原创 PAT 甲级1008 Elevator

PAT 甲级1008 Elevator// 1008 Elevator.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>using namespace std;int main(){ int sum = 0, a, now = 0, n; cin >> n; while (n-- > 0) { cin >> a; if (a &g

2021-06-01 15:05:11 178

原创 PAT 甲级 1007 Maximum Subsequence Sum

PAT 甲级 1007 Maximum Subsequence Sum最大子段和问题暴力法从i为0到K-1遍历,每次遍历中让j从i到K-1遍历,以找出以i,j为始末下标的最大字段和。注意sum初值置为-1,防止出现最大子段和就是0的情况,如果sum置为0,当出现-1 0 0这种数据时,thissum始终无法>sum,最后输出i = 0, j= 2。 而很明显,应当输出i = j = 1// 1007 Maximum Subsequence Sum.cpp : 此文件包含 "main" 函

2021-06-01 14:04:31 231

原创 PAT 甲级1004 Counting Leaves

PAT 甲级1004 Counting LeavesN为树中节点数量0 < N < 100,M为叶子节点数量。ID是代表非叶子节点的两位数(有child),K是其儿子节点数量, 后跟k个儿子节点ID要按层输出每层叶子节点的数量就是对树进行搜索深度优先搜索DFS按深度优先对树进行搜索,每当遇到一个节点,如果该节点是叶子节点,则将该层的叶子节点数量++,同时比较该层深度与已知最大深度,如果该层深度更深,更新最大深度。如果该节点不是叶子节点,则对该节点的每个叶子节点,递归调用本函数。

2021-05-31 19:06:58 424

原创 PAT 甲级 1006 Sign In and Sign Out

PAT 乙级 1006 Sign In and Sign Out水题,时间比较使用string的运算符即可// 1006 Sign In and Sign Out.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <vector>using namespace std;struct node{ string id; string signin; string s

2021-05-31 15:06:27 73

原创 PAT 甲级 1005 Spell It Right

PAT 甲级 1005 Spell It Right大数用string保存逆序输出// 1005 Spell It Right.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <vector>using namespace std;int main(){ string s; int temp = 0; vector<string> res;

2021-05-31 14:37:13 76 2

原创 PAT 1003 Emergency

PAT 1003 Emergency题目大意:有n个城市和m条路,每个城市有救援小组,所有边边权已知,所有点点权已知(救援小组数量),给定起点和终点,求起点到终点的最短路径之和以及最短路径上的最大点权之和(沿途能召集到的救援小组数量之和)分析:重点是要求出从单个节点出发到图中其他各节点的最短路径,然后才能求出相应数据。用一次Dijkstra算法,dis[i]标识从出发点到i节点的最短路径长度,num[i]表示到i节点的最短路径条数,w[i]表示到i节点的点权之和// 1003 Emergency.cp

2021-05-30 20:40:50 129

原创 PAT 乙级 1042 字符统计

PAT 乙级 1042 字符统计先统计每个字母出现的频率。然后遍历确定出现频率最高的字母// 1042 字符统计.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <map>#include <string>using namespace std;int main(){ string s; map<char, int> m; get

2021-05-30 16:50:07 86

原创 PAT 乙级 1040 有几个PAT

PAT 乙级 1040 有几个PAT要看字符串中一共有多少PAT,重点是看我们遇到一个A时,它左边有几个P,右边有几个T,排列组合即可知道,以A为中心的PAT数量等于 左边P的数量*右边T的数量把遇到每个A计算的结果求和,就得到结果左边P的数量:遍历时,遇到p就countp++右边T的数量:先遍历一遍得到countt,第二次遍历时,每遇到T就countt–,因为遇到A时,不会再看其左边T的数量。// 1040 有几个PAT.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。

2021-05-30 16:18:18 72

原创 PAT 乙级 1036 跟奥巴马一起编程

PAT 乙级 1036 跟奥巴马一起编程// 跟奥巴马一起编程.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>using namespace std;int main(){ int n; char c; cin >> n >> c; for (int i = 0; i < n; i++) { cout << c;

2021-05-30 14:38:24 59

原创 PAT 乙级 1035 插入与归并

PAT 乙级 1035 插入与归并理解插入与归并的区别插入是每次从输入序列中获得一个数据,插入有序队列中的正确位置。某个中间序列,在某个位置前必定有序。归并是每次将相邻子序列合并成有序序列,第一次是将两个元素合并(排好序),第二次是将两个包括两个元素的子序列合并成包含四个元素的有序序列。序列内必定有序,序列间不一定。// 1035 插入与归并.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include &lt

2021-05-30 14:26:13 90

原创 PAT 乙级 1034 有理数四则运算

PAT 乙级 1034 有理数四则运算// 1034 有理数四则运算.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>using namespace std;long long a, b, c, d;/** 返回最大公约数*/int gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b);}void func(long

2021-05-30 13:25:12 114

原创 PAT 10331033 旧键盘打字

PAT 10331033 旧键盘打字这个题里,因为可能没有键坏,所以首行可能为空如果使用cin >> s,cin会自动忽略空格、回车、制表符,直到接触到第一个非空格字符才会开始阅读在这种情况下,cin无法读取首行的空字符串所以使用c++的getline(cin,s),此函数读取整行,包括前导和嵌入的空格,存储在字符串s中关于函数toupper(int c),它把小写字母转换成大写字母,如果c有对应大写字母,返回其大写字母。如果没有,c保持不变所以本题,对于本来就是大写字母外

2021-05-28 21:06:25 91

原创 PAT 乙级 1032 挖掘机技术哪家强

PAT 乙级 1032 挖掘机技术哪家强// 1032 挖掘机技术哪家强.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <map>#include <vector>#include <algorithm>using namespace std;typedef pair<int, int> PAIR;bool cmp_byvalue(PAI

2021-05-28 18:05:52 76

原创 PAT 乙级 1029 旧键盘

PAT 乙级 1029 旧键盘分析:对于字符串s1 s2,要找到字符存在于s1的并且不存在于s2的,并且其大写字母不存在于目标字符串res,将该字符加入resstring.find(char c)函数可以返回字符串中首次出现c的位置,若找不到则返回一个值npos// 1029 旧键盘.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>using namespace std;int main(){ str

2021-05-28 16:58:01 61

原创 PAT 乙级 1022 D进制的A+B

PAT 乙级 1022 D进制的A+B给的数是非负整数(≤230−1),它小于int的数值范围,直接int保存就行强调非负,要考虑二者都为0时的处理// 1022 D进制的A+B.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ int a,

2021-05-27 14:54:19 64

原创 PAT 乙级 1021 个位数统计

PAT 乙级 1021 个位数统计输入整数N不超过1000位,用单一变量肯定保存不了用字符数组和map处理,map自动排序// 1021 个位数统计.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <map>#define maxLength 1001using namespace std;int main(){ char n[maxLength]; int

2021-05-27 14:33:51 56

原创 PAT 乙级 1020 月饼

PAT 乙级 1020 月饼测试点2:库存不是整数// 1020 月饼.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <vector>#include <algorithm>#include <iomanip>using namespace std;struct Node{ double x; double y; double p

2021-05-27 14:16:36 123

原创 PAT 乙级 1019 数字黑洞

PAT 乙级 1019 数字黑洞思路:使用字符串保存数字,然后对字符串进行非递增排序和非递减排序,将字符串转化为数字,两数字相减得到新字符串,继续循环直到新字符串为6174或0000注意:即使第一个数字就是6174也要循环,因为要求6174 作为差出现,因此必须要做一次循环,再进判断// 1019 数字黑洞.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <algorithm>#inc

2021-05-26 10:22:16 106

原创 PAT 乙级 1015 德才论

PAT 乙级 1015 德才论需要考虑对准考证号、德、才的排序,这种多情况综合排序,可以使用vector+结构体+比较函数cmp来解决。代码:// 1015 德才论.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <algorithm>#include <vector>using namespace std;/** 用结构体存储信息,然后用vector保存*/t

2021-05-24 16:16:47 158

原创 PAT 乙级 1009 说反话

PAT 乙级 1009 说反话最后一次读取后,cin不会读取缓冲区的\n,此时缓冲区中只有一个\n,它将被getchar()读取,如果放在push之前,最后一个数据将不能入栈,他虽然被cin读取后存入了s中,但没有进行入栈操作就被break了所以理解getchar和cin的关系很重要// PAT 乙级 1009 说反话.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <stack>#i

2021-05-23 11:20:04 62

原创 PAT 乙级 1008 数组循环右移

PAT 乙级 1008 数组循环右移处理循环右移的套路数组长度为n,要把数组循环右移m位,只用把数组倒置,然后把数组前m位倒置,在把数组后n-m位倒置即可。注意m可能大于n,循环右移m位相当于循环右移m%n位,循环右移n位等于没移动,处理之前先让m %= n// PAT 乙级 1008 数组循环右移.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <algorithm>#inclu

2021-05-23 10:56:22 221 1

原创 PAT 乙级1007 素数对猜想

PAT 乙级1007 素数对猜想参考柳婼大神检测素数的办法1007. 素数对猜想 (20)-PAT乙级真题_柳婼 の blog-CSDN博客对于整数n,从2开始到根号n,判断n能否为其整除,若可以,则其不是素数,返回false判断素数对,因为2与4中 4不是素数1和3中 1不是素数所以直接从3开始判断// PAT 1007 乙级 素数对猜想.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include

2021-05-23 09:58:51 147

原创 PAT 乙级1006 换个格式输出整数

PAT 乙级1006 换个格式输出整数用vector和map处理,vector可得到整数数位。map来记录各个数位上的数字大小// PAT 乙级 1006 换个格式输出整数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <vector>#include <string>#include <map>using namespace std;int main()

2021-05-23 09:38:44 125

原创 PAT 1005 乙级 继续(3n+1)猜想

PAT 1005 乙级 继续(3n+1)猜想本质是对输入数列进行检索,对前面的数进行3n+1计算产生的中间量进行记录,在后面遇到某个数等于该中间量时,可认为该数被覆盖了。 若遍历数列结束,出现了有的数不能被覆盖,则该数为关键树// PAT 1005 乙级.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <map>#include <vector>#include <a

2021-05-23 09:18:14 145

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除