![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT
oranges_c
落寞是岁月的痕迹
展开
-
PAT 2016 冬季
这是第二次甲级考试,第一次纯粹试试水,差的一塌糊涂。 时隔半年再次考甲级,其实自己进步还是挺大的。 如果不是这次有点意外。。100分还是轻松的。 然而这次第四题竟然考了PAT里最不熟悉的AVLtree。。 换成其他题都是花点时间都能满分的。 然而给这题跪了。。 最后90+分。 还是辜负了所有人的期望,无缘100.在acm的道路上,一直在被虐。 却不愿放弃。原创 2016-12-11 15:39:00 · 365 阅读 · 0 评论 -
PAT(A)-1102. Invert a Binary Tree (25)(数据结构+bfs)
题目链接题目大意: 给你n个点的树,让你输出层序和中序遍历序列。#include <bits/stdc++.h>using namespace std;#define ALL(v) (v).begin(),(v).end()#define cl(a,b) memset(a,b,sizeof(a))#define clr clear()#define pb push原创 2017-03-10 20:11:22 · 259 阅读 · 0 评论 -
PAT(A)-1126. Eulerian Path (25)(欧拉图的判断)
题目链接题目大意: 给你一个图,判断是欧拉回路,还是不是欧拉回路的欧拉通路,还是不是欧拉图。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))typedef long long LL;const int INF = 0x3f3f3f3f;const in原创 2017-03-07 20:35:11 · 255 阅读 · 0 评论 -
PAT(A)-1127. ZigZagging on a Tree (30)(树的重建)
题目链接题目大意: 给你一颗二叉树的中序和后序。 要你输出指定顺序的序列。又是树的重建。。 输出的序列跟层序差不多,判断一下是否逆序存放就行了。PS:这次春季,水的一匹。。这树的重建出了不知道多少遍。。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#原创 2017-03-07 20:39:55 · 794 阅读 · 0 评论 -
PAT(A)-1099. Build A Binary Search Tree (30)
题目链接题目大意: 一棵二叉排序树,有n个点,告诉你每个点的左右儿子编号; 给你n个值。 确定每个值所在的位置。输出层序序列。先将值排好序。 从根节点开始递归建树。 每次确定当前点在当前区间排第几,也就是要知道当前点的左子树上有多少个点。搜索一遍即可。#include <bits/stdc++.h>using namespace std;#define fi f原创 2017-03-21 17:41:01 · 217 阅读 · 0 评论 -
PAT(A)-1123. Is It a Complete AVL Tree (30)(AVL+bfs)
题目链接题目大意: 给你n个值,建一棵AVLtree,输出这棵树的层序遍历,并问这棵树是否是完全二叉树其实只要搞清楚LL旋转就可以推出其余三种旋转了。 我觉得代码说的还是很清楚的,看具体的代码吧。 还是不懂的话可以参考这里 不过链接里代码有两处有点问题,认真的看的话看的出来的。#include <bits/stdc++.h>using namespace std;原创 2017-03-13 20:01:46 · 260 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L2-016. 愿天下有情人都是失散多年的兄妹(dfs)
题目链接一看题目,我以为可以用LCA算法写,写了半天,后来发现不是树(woc…) 再看题目,不超过5代,那么直接暴搜咯、、查询时,标记一个人的不超过5代的祖先,再从另一个人向上搜索在5代内是否有标记过的祖先。#include <bits/stdc++.h>using namespace std;#define ALL(v) (v).begin(),(v).end()#原创 2017-03-14 18:08:27 · 539 阅读 · 0 评论 -
PAT(A)-1129. Recommendation System (25)(优先队列)
题目链接题目大意: 给你n个数和k大小的空间。 在每次访问第i个数之前,先输出第i个数之前k个按出现次数从大到小排列后的数,如果次数相同则按数的大小从小到大输出。用一个优先队列来维护,每次输出前k个。 几个数组: vis[i] := 表示i是否在前k个输出的数里 use[i] := 表示i是否之前出现过。 对于每一个访问的数(除了第一个),先输出前k个,不满k个则原创 2017-03-24 13:21:45 · 447 阅读 · 0 评论 -
PAT(A)-1130. Infix Expression (25)(树的中序遍历)
题目链接题目大意: 给你n个点的值以及左右孩子编号。 输出表达式。遍历的时候,如果是叶子节点的就不需要给左右括号 输出的时候去掉最外面的一对括号。 注意n==1的情况#include <bits/stdc++.h> using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define clr clear原创 2017-03-24 13:28:39 · 377 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L2-014. 列车调度(LIS)
题目链接 决赛的L2-2,当时暴力下,有几个case是TLE的。。 现在一看,就感觉有点像是LIS,然后交了下还真过了。。至于为什么 要将一个序列以递减的顺序出栈,在每个栈的序列都要是从上到下是递减的。 假设栈的数量小于LIS,那么总会有一个数的前面有比它小的数 就是有一个栈的不是按照从上到下是递减的 那么出栈也不可能是递减出栈了#include <cstdio>原创 2017-02-11 16:54:06 · 427 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L3-005. 垃圾箱分布(最短路dijkstra)
题目链接对每一个垃圾桶都用一遍dijkstra,然后把相应的数据存入结构体排下序,再输出就可以了 如果有一个居民点和垃圾桶间没有路径,这肯定是不行的。#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;#define cl(a,b原创 2017-02-12 15:10:31 · 610 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L3-007. 天梯地图(最短路)
题目链接 这题跟pat(A)1111很像。。 只是在求最短路和最快的路的次要条件不一样并且输出格式颠倒一下。 之前写过pat(A)1111的代码 就稍微改下。#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;#define原创 2017-02-11 22:56:37 · 414 阅读 · 0 评论 -
PAT(A)1111 Online Map (30)(最短路)
题目大意: 给你n个点,m条路。 接下来m行,V1 V2 one-way length time one-way 表示是不是单向边,1是0否 求最短和最快的距离和时间 并输出路径。 如果路径不一样,则按一下格式输出 Distance = D: source -> v1 -> … -> destination Time = T: source -> w1 ->原创 2016-12-06 17:59:15 · 648 阅读 · 0 评论 -
PAT(A) 1119 Pre- and Post-order Traversals (30)(数据结构)
发现今年秋季的好简单。。亏了。应该都写过知道中序和先序或者后序的一个然后重建树。题目大意: 给你二叉树的先序和后序遍历序列。输出任意一种中序遍历序列(不唯一)。知道先序和后序很容易知道根节点,然后从先序的根结点往后 和 后序序列的开头往后找按升序或降序排列后一样的序列,然后递归建树。#pragma comment(linker, "/STACK:1024000000,102原创 2016-12-06 15:45:20 · 359 阅读 · 0 评论 -
PAT(A)1003 Emergency(最短路+计数)
题目大意: 给你N个城市,M条路。给你初始点s和终止点t。 问从s到t的最短路径数和最大救援队数。用cnt[i] := 表示在最短路的条件下,从s到达i点的最短路径数 如果在从s到i的路径中有一点j使得dis[i] == dis[j] + g[i][j],则cnt[i] += cnt[j]; 如果dis[i] > dis[j] + g[i][j];则cnt[i] =原创 2016-12-03 20:18:12 · 231 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L2-004. 这是二叉搜索树吗?
题目链接虽然只是L2级,但是感觉比一些L3还要难写。。其实就是建树的一个过程,如果可以把序列划分成两个部分,一部分的值都比这个节点小,另一部分的值都大于等于这个节点的值 对于每一个节点,都如此判断,递归进行。 这题要注意很多细节。 通不过的可以测试下 Sample1: 2 2 1 Sample2: 3 3 1 2#include <cstdio>#incl原创 2017-02-10 16:33:38 · 470 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L3-004. 肿瘤诊断(三维bfs)
题目链接 这题原来写的是dfs。结果给我段错误,应该是爆栈了?后来改成了三维bfs#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;#define ALL(v) (v).begin(),(v).原创 2017-02-10 16:37:49 · 372 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L2-012. 关于堆的判断(小顶堆)
题目链接这里建堆要每输入一个值就插入并且向上调整 在堆顶设置一个哨兵会省点操作 还要注意值有负数,在处理字符串的时候要注意。(之前一直不知道哪里有问题,后来才发现负数忘了处理,一直过不了)#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <algorith原创 2017-02-19 18:01:17 · 968 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L2-007. 家庭房产(并查集)
题目链接 并查集的略微扩展,用Size数组记录人数,num数组记录房产数,area数组记录面积 就是处理起来会有点麻烦。#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <algorithm>#include <vector>#include <set原创 2017-02-11 16:39:28 · 524 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L2-013. 红色警报(dfs)
题目链接还记得这是去年决赛时L2的第一道题,当时还是有点懵。现在看看就是暴力的dfs。。#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <algorithm>#include <vector>#include <set>#include <map>#原创 2017-02-11 16:43:09 · 338 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L2-018. 多项式A除以B
题目链接不给数据范围。让我说什么好。。我还犹豫了半天要不要用数组。。 最后想了想,算了用数组暴力一发。。 结果就过了。。就是两个循环; 第一重枚举a多项式的头 第二重进行计算 PS:大区赛时敲得代码。略丑。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a)原创 2017-03-26 16:37:29 · 981 阅读 · 0 评论