![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PTA 团体设计天梯赛
JZK-Keven
退役ACMer
展开
-
L2-006. 树的遍历
已知二叉树的后序遍历和中序遍历,求出它的层序遍历 与前两个不同的是,层序遍历必须先建立一个树,然后BFS,就是广度优先搜索,不懂的话可以看【这篇文章】 由于树的节点只能用指针指向,所以建立指针数组,再遍历就OK了。 /* 7 2 3 1 5 7 6 4 1 2 3 4 5 6 7 * 4 1 6 3 5 7 2 */ #include<iostream> #include<...原创 2018-03-15 19:16:33 · 225 阅读 · 0 评论 -
L3-007 天梯地图 (30 分)
Dijkstra瞎搞,感觉这个题等于两个L2-001 紧急救援。。。 明确一点,当有多条最短距离的路径时,取经过的点数最少的路径。 当有多条最短时间的路径时,取距离最短的那一条。 建议代码里面写点注释,不然容易搞死自己。 Code: #include <bits/stdc++.h> #define ll long long const ll inf = 1e9 + 7; u...原创 2019-03-27 19:40:21 · 867 阅读 · 2 评论 -
L3-009 长城 (30 分)
由于烽火台只能向左边瞭望,所以本题就是求图中的所有“凸起来的点”,那么哪些点是“凸起来的点”? 如下图所示,点C就是凸点。 这个图好像和凸包有点像,那么是不是“凸起来的点”是不是凸包上的点呢,显然不是,比如下图 那么反过来,凸包上的点一定是“凸起来的点”吗?是的。并且这些点都曾经是凸包里面的点! 首先假设在加入了某个点后形成了一个凸包,那么除了这个点的其他点都是凸点。(请大家仔细思...原创 2019-03-26 20:58:28 · 1193 阅读 · 0 评论 -
L2-024. 部落(并查集)
并查集,背模板就AC了,基本模板就是getf函数和merge函数,注意getf函数里面的que[k]=getf(que[k]),其中的que[k]=一定不能省略,这一步是压缩路径,如果少了这一步,非常容易运行超时!!! #include<iostream> #include<algorithm> using namespace std; int que[10005]; i...原创 2018-03-29 15:47:16 · 194 阅读 · 0 评论 -
L2-021. 点赞狂魔
能用STL解决的问题都不叫问题。 set是一个集合,S.size()表示的是不同标签的个数(即集合的大小)。 #include<iostream> #include<set> #include<algorithm> using namespace std; typedef struct node { string a; int count; ...原创 2018-03-26 20:53:42 · 163 阅读 · 0 评论 -
L2-022. 重排链表
看注释。 与上一题相同的思路,在结构体中加入一个标记值flag将结构体按顺序排列,输出的话,每一个循环输出最后的结构体和最前的结构体,具体实现看代码。 这题只有22分,并没有AC,由于能力有限,希望大佬指点一下,哪里可能会错,谢谢大佬。 #include<iostream> #include<map> #include<algorithm> usi...原创 2018-03-26 20:20:49 · 216 阅读 · 0 评论 -
L2-002. 链表去重
已AC,具体过程看注释。 #include<iostream> #include<map> #include<algorithm> using namespace std; typedef struct node { int pre; int data; int next; int flag;//标记 0-100000为保留...原创 2018-03-26 19:16:26 · 204 阅读 · 0 评论 -
L2-020. 功夫传人
用了一个vector容器,具体参考C++函数库 #include<iostream> #include<cstring> #include<vector> #include<algorithm> using namespace std; double z,r,sum=0,people[100005];//得道者 vector<int>...原创 2018-03-20 20:53:38 · 181 阅读 · 0 评论 -
L2-008. 最长对称子串
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。 输入格式: 输入在一行中给出长度不超过1000的非空字符串。 输出格式: 在一行中输出最长对称子串的长度。 输入样例: Is PAT&TAP symmetric? 输出样例: 11 #inclu...原创 2018-03-14 08:58:39 · 121 阅读 · 0 评论 -
L2-010. 排座位(并查集)
背模板直接AC,没有任何坑点。 #include<iostream> #include<cstring> using namespace std; int n,m,k,que[105],map[105][105]; int getf(int k) { return que[k]==k?k:que[k]=getf(que[k]); } int merge(int a...原创 2018-03-29 19:27:34 · 226 阅读 · 0 评论 -
L1-043. 阅览室
用一个book数组标记一下这本书是否被借了,如果被借了,那么下次归还的时间就计算时间,两个测试点有坑。 关于第一个测试点,如果一本书被第一个人借了,在他还书之前另一个人也借了这本书,则用另一个人的借书信息覆盖第一个人的信息。 #include<iostream> #include<cstring> using namespace std; int main() { ...原创 2018-03-23 10:47:10 · 433 阅读 · 0 评论 -
L3-004. 肿瘤诊断
这题并不难,一个三维BFS,不过很难AC,易错点写在注释里。 #include<iostream> #include<cstring> using namespace std; typedef struct node { int x; int y; int z; }Node; Node que[1300*130*70]; int m,n,l,t; ...原创 2018-03-22 20:59:42 · 269 阅读 · 0 评论 -
L2-005.集合相似度
vector容器内嵌入set容器 vector<set<int> >V解释起来就是定义了一个vector容器,而vector中存的就是一个个set容器,由于set容器有自动去重功能,所以该题采用此方法较为简便。 关于vector有不懂的地方可以参考【链接】 关于set有不懂的地方可以参考【链接】 #include<iostream> #include&l...原创 2018-03-22 20:49:55 · 304 阅读 · 0 评论 -
L2-011. 玩转二叉树
已知二叉树的中序遍历和前序遍历,求出它反转后的层序遍历 反转的意思就是将这棵树的左子树和右子树调换位置输出,这题给的是中序遍历和前序遍历,其他和L2-006一样。 /* 7 1 2 3 4 5 6 7 4 1 3 2 6 5 7 * 4 6 1 7 5 3 2 */ #include<iostream> #include<stdlib.h> using namespac...原创 2018-03-17 14:09:33 · 293 阅读 · 0 评论 -
L2-001 紧急救援 (25 分) 最短路
Dijkstra维护两个值。递归找起点。 Code: #include <bits/stdc++.h> const int inf = 1e9 + 7; const int maxn = 505; int a, b, c, n, m, ss, ee; int dis[maxn], s[maxn][maxn], cnt[maxn], people[maxn], num[maxn],...原创 2019-03-27 19:43:12 · 2250 阅读 · 0 评论