PAT
炎心
。。。
展开
-
PAT--Advanced Level--1007 Maximum Subsequence Sum (25 分)
做题思路: 给出一个数组,求连续子序列的和的最大值。先预处理一个前缀和,方便取出某一段区间的和,他既然要求最大,那么端点的值必然大于等于零(注意这题有零要包含在序列里,题目没讲清楚,如果不包含的话,有个测试点过不了)。把所有可能的端点记录下来,枚举每个端点(一共要跑5e7个数据),取出最大的情况。 #include<iostream> #include<cstring> #include<algorithm> #include<cmath> using na原创 2021-11-18 20:04:29 · 171 阅读 · 0 评论 -
PAT--Advanced Level--1006 Sign In and Sign Out (25 分)
做题思路: 按照比较小时,分钟,秒的顺序进行排序,sign_in的部分输出最早的,sign_out输出最晚的。 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N = 2e5 + 10; string name[N]; struct Node{ int h, m, s, num; }in[N], out[N]; int cmp1(No原创 2021-11-18 19:50:05 · 408 阅读 · 0 评论 -
PAT--Advanced Level--1005 Spell It Right (20 分)
做题思路: 直接用map把数值和英文单词对应起来。其它的就只剩下简单模拟了。 #include<iostream> #include<algorithm> #include<cstring> #include<map> using namespace std; const int N = 1010; map<int, string> mp; string str1; char ans[N], idx; void init() { mp[原创 2021-11-18 19:40:07 · 261 阅读 · 0 评论 -
PAT--Advanced Level--1004 Counting Leaves (30 分)
做题思路: 建立一棵树,求树上每层的叶结点数量。开个记录深度和记录子节点的结构,如果一个结点没有子节点,那它就是叶结点,当前层数值加一。最后输出每层的叶结点数量。 #include<iostream> #include<algorithm> #include<cstring> #include<vector> #include<map> using namespace std; const int N = 110; map<int, i原创 2021-11-18 19:36:29 · 319 阅读 · 0 评论 -
PAT--Advanced Level--1003 Emergency
做题思路: 给出一幅图,图中每个结点都有一个值。从一个点到另一个点,求最短路径的数量,作为第一个输出。在求得每条最短路径同时,求每条最短路径中,路过结点的值的和做大是多少,作为第二个输出。 Dijkstra满足拓扑序,所以即使是有环图,也可以进行最短路数量的计数。 我这里用的是堆优化的Dijkstra,普通的Dijkstra也可以过。 #include<iostream> #include<algorithm> #include<cstring> #include<原创 2021-11-17 20:29:57 · 74 阅读 · 0 评论 -
PAT--Advanced Level--1002 A+B for Polynomials
做题思路: 要求两个多项式相加,结果按照指数从大到小的顺序输出。可以运用map离散化指数,使得每个指数相同的数的系数相加,最后排序输出结果就好。我这里处理的是多组输入,不用多组输入也可以过。 #include<iostream> #include<algorithm> #include<cstring> #include<map> using namespace std; const int N = 1010; map<int, int> S原创 2021-11-17 20:15:50 · 83 阅读 · 0 评论 -
PAT--Advanced Level--1001 A+B Format (20 分)
做题思路: 简单模拟题,正负数分类讨论,注意不要在负号前加逗号就行。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int a, b, len; string ans; int main() { scanf("%d%d", &a, &b); ans = to_string(a + b); l原创 2021-11-17 20:09:08 · 184 阅读 · 0 评论