![](https://img-blog.csdnimg.cn/20200225161037675.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
团体程序设计天梯赛-练习集
如题
Yuhan の Blog
这个作者很懒,什么都没留下…
展开
-
团体程序设计天梯赛 L3-021 神坛(极角排序)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805046577840128思路:1.一共n个点,对于每一个点我们都可以将它作为顶点,那么此点和其它n-1个点就会组成n-1个向量;2.n-1个向量中,我们任意选取两个向量都可以满足“选取三块石头”这个条件,但是我们现在的目标是面积最小,因此我们需要...原创 2020-03-08 15:42:27 · 473 阅读 · 0 评论 -
团体程序设计天梯赛 L3-013 非常弹的球 (30分)
题目链接:L3-013 非常弹的球 (30分)思路:我们由动能公式可以求得速度v=2Emv=\sqrt{\frac{2E}{m}}v=m2E设ang为θ\thetaθ,则水平速度为vx=cosθ2Emv_{x}=\cos\theta\sqrt{\frac{2E}{m}}vx=cosθm2E,竖直速度为vy=sinθ2Emv_{y}=\sin\theta\sqrt{\fr...原创 2020-02-05 22:15:37 · 276 阅读 · 0 评论 -
团体程序设计天梯赛 L3-017 森森快递 (30分)(线段树区间更新)
题目链接:L3-017 森森快递 (30分)思路:题意可以理解为按一定顺序选取这些线段,每选取一个线段,求出该区间最小值,然后区间内都减去这个最小值,依次取下一个线段,我们需要求减去值的总和的最大值;想象一下,每次选取完一段有效线段后,总区间内将会出现1或多个0值,这将导致其它覆盖这些端点的且未选取线段会失效(即选取了区间最小值为0,即不能运输货物);我们采用贪心的思想,使这些0值...原创 2020-02-03 21:35:53 · 627 阅读 · 0 评论 -
团体程序设计天梯赛 L3-016 二叉搜索树的结构 (30分)
题目链接:L3-016 二叉搜索树的结构 (30分)思路:用map来映射某个点的左孩子和右孩子,同时记录层次;然后依据输入进来的字符串挨个判断即可;代码:#include<bits/stdc++.h>using namespace std;const int INF = 1 << 30;int n, m, a[123];map<int,...原创 2020-01-31 20:17:24 · 237 阅读 · 0 评论 -
团体程序设计天梯赛 L3-020 至多删三个字符 (30分)(DP)
题目链接:L3-020 至多删三个字符 (30分)思路:PAT顶级有一道类似的,至多删两个字符最多能得到多少不同字符串,题解就请参考这篇啦:https://blog.csdn.net/qq_45228537/article/details/103033486重点就是去重过程;代码:#include<bits/stdc++.h>using namespace s...原创 2020-01-31 13:40:02 · 386 阅读 · 0 评论 -
团体程序设计天梯赛 L3-011 直捣黄龙 (30分)
题目链接:L3-011 直捣黄龙 (30分)思路:很复杂的变形,最短路就使用dijkstra,注意细节就好代码:#include<bits/stdc++.h>using namespace std;inline int toi(string & s) { return s[0] - 'A' + (s[1] - 'A' << 5) + (...原创 2020-01-30 19:58:28 · 440 阅读 · 0 评论 -
团体程序设计天梯赛 L3-009 长城 (30分)
题目链接:L3-009 长城 (30分)思路:既然所组建的瞭望台可以看见所有地方,我们不妨化简一下题意:组建的瞭望台可以看见所有的点—>对于每个点我们找到它南方的瞭望台做法就是对于每一个点我们遍历它南方的点,找到必须成为瞭望台的那个点,将那个点设置为瞭望台;假设当前点为A,它的南方有相邻的两点B、C,此时B必须成为瞭望台的条件是AB⃗×AC⃗<0\vec{AB} \t...原创 2020-01-30 16:51:19 · 836 阅读 · 0 评论 -
团体程序设计天梯赛 L3-008 喊山 (30分)(BFS)
题目链接:L3-008 喊山 (30分)思路:以给定的点为源点进行bfs即可代码:#include<bits/stdc++.h>using namespace std;inline int read() { int x = 0; char c; while(c = getchar(), c < '0' || c > '9'); while(c...原创 2020-01-30 14:59:00 · 409 阅读 · 0 评论 -
团体程序设计天梯赛 L3-007 天梯地图 (30分)(dijkstra变形)
题目链接:L3-007 天梯地图 (30分)思路:这是PAT甲级原题…原本想直接复制之前的code,奈何博主觉得自己以前写的太乱了,遂重新写了一遍;这道题使用两次dijkstra即可,但是需要稍微改变一下,例如求最快最短的情况下,慢的需要更新为快的毋庸置疑,同时同样快的应该考虑路径长度是否需要更新;代码:#include<bits/stdc++.h>using ...原创 2020-01-30 14:13:59 · 454 阅读 · 0 评论 -
团体程序设计天梯赛 L3-015 球队“食物链” (30分)(DFS + 剪枝)
题目链接:L3-015 球队“食物链” (30分)思路:题意即给出的所有队能否连成环;因为需要字典序小,我们优先遍历编号小的即可;理所当然第一支队应该是1,我们在遍历的过程中,如果发现所有打败第一支队伍的队伍都已经被遍历过,则直接return;代码:#include<bits/stdc++.h>using namespace std;const int m...原创 2020-01-30 02:10:12 · 298 阅读 · 0 评论 -
团体程序设计天梯赛 L3-010 是否完全二叉搜索树 (30分)
题目链接:L3-010 是否完全二叉搜索树 (30分)思路:可以模仿线段树建树的方式,用数组建树,然后遍历代码:#include<bits/stdc++.h>using namespace std;#define l (u << 1)#define r (u << 1 | 1)int n, tree[(1 << 20) ...原创 2020-01-29 20:21:44 · 204 阅读 · 0 评论 -
团体程序设计天梯赛 L3-006 迎风一刀斩 (30分)(几何规律题)
题目链接:L3-006 迎风一刀斩 (30分)思路:这是PAT顶级原题啊;题解请看我顶级那篇文章啦~https://blog.csdn.net/qq_45228537/article/details/103637240原创 2020-01-29 15:23:03 · 819 阅读 · 0 评论 -
团体程序设计天梯赛 L3-005 垃圾箱分布 (30分)(Djikstra求最短路)
题目链接:L3-005 垃圾箱分布 (30分)思路:按题意用Dijkstra求得每个垃圾箱到所有居民的最短路径,这些最短路里最短的一个就是垃圾箱到所有居民的最短路,此时我们求得所有垃圾箱里这个最短路最长的一个即可;如果存在距离大于Ds的要舍去,得到多个答案需要按题意筛选出唯一的一个输出;代码:#include<bits/stdc++.h>using namesp...原创 2020-01-29 14:58:26 · 393 阅读 · 0 评论 -
团体程序设计天梯赛 L3-004 肿瘤诊断 (30分)(DFS)
题目链接:L3-004 肿瘤诊断 (30分)思路:此题题意很简单,就是求连通的像素个数;我们DFS即可,每次查询它的上下左右前后,如果符合条件就继续DFS;可是有一个问题,此题DFS层数过多会爆栈,解决方法就是改成BFS;什么?这么顺眼的DFS题你让我用BFS?我才不干( ̄^ ̄)那么如何使用DFS来AC此题呢?1.首先我们需要手动加栈,PTA的编译器是G++,因此我们可以使用...原创 2020-01-28 21:46:02 · 578 阅读 · 0 评论 -
团体程序设计天梯赛 L3-003 社交集群 (30分)(并查集)
题目链接:L3-003 社交集群 (30分)思路:对于每个爱好我们存一个代表人物进去,然后遇到其它有这个爱好的人就使用并查集将它们合并起来;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1005;int n, par[maxn], a[maxn];inline void ini...原创 2020-01-28 16:48:52 · 244 阅读 · 0 评论 -
团体程序设计天梯赛 L3-002 特殊堆栈 (30分)(树状数组+二分)
题目链接:L3-002 特殊堆栈 (30分)思路:用stack容器模拟栈的入栈和出栈;用树状数组bit[i]维护前缀和;查找中值时二分树状数组的sum()即可;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;int n, bit[maxn];inline vo...原创 2020-01-28 16:23:33 · 260 阅读 · 0 评论 -
团体程序设计天梯赛 L3-001 凑零钱 (30分)(0/1背包)
题目链接:L3-001 凑零钱 (30分)思路:将每个硬币的面值既当作它的价值也当作它所消耗的容量,我们的目标即是在容量为m的情况下,所能得到的最大总价值能否为m;既然是求一定容量下的最大价值,那么就是经典的0/1背包问题了;我们需要打印出最大价值的情况下所选取的所有硬币,我们只能从后往前打印,因此我们将初始的价值降序排序,从而在从后往前选取路径时先选取的是面值小的硬币;代码:...原创 2020-01-28 15:26:41 · 449 阅读 · 0 评论 -
团体程序设计天梯赛 L2-012 关于堆的判断 (25分)
题目链接:L2-012 关于堆的判断 (25分)思路:先建堆,然后每个询问都可以用一次dfs解决;代码:#include<bits/stdc++.h>using namespace std;int n, m, tmp, a[1234];inline void push(int & x) { a[++tmp] = x; for(int i = tm...原创 2020-01-27 21:00:58 · 256 阅读 · 0 评论 -
团体程序设计天梯赛 L2-018 多项式A除以B (25分)
题目链接:L2-018 多项式A除以B (25分)思路:仿照竖式除法,维护余数和结果即可;代码:#include<bits/stdc++.h>using namespace std;inline void read(vector<double> & v) { int n; cin >> n; for(int i = 0; ...原创 2020-01-27 20:04:04 · 275 阅读 · 0 评论 -
团体程序设计天梯赛 L2-004 这是二叉搜索树吗? (25分)
题目链接:L2-004 这是二叉搜索树吗? (25分)思路:非镜像和镜像需要分开单独进行搜索;按非镜像/镜像规则将前序序列严格转化为后序序列,如果序列个数不足n个那说明不符合当前规则;均不符合我们就输出NO;代码:#include<bits/stdc++.h>using namespace std;int n, a[1005];vector<int...原创 2020-01-26 22:02:20 · 899 阅读 · 0 评论 -
团体程序设计天梯赛 L2-032 彩虹瓶 (25分)
题目链接: L2-032 彩虹瓶 (25分)思路:用栈和队列可以很方便地进行模拟;中途判断是否会出现工人不开心的情况;代码:#include<bits/stdc++.h>using namespace std;bool vst[1005];int main() {#ifdef MyTest freopen("Sakura.txt", "r", std...原创 2020-01-26 17:21:06 · 370 阅读 · 0 评论 -
团体程序设计天梯赛 L2-030 冰岛人 (25分)
题目链接:L2-030 冰岛人 (25分)思路:此题细心处理字符串,存储相应的信息,最后寻找有无LCA,如果有是否能超过五代;可能map用多了…最后一个测试点提交上去有时候TLE…代码:#pragma GCC optimize(2)#include<bits/stdc++.h>using namespace std; //最后一个测试...原创 2020-01-26 15:48:57 · 808 阅读 · 0 评论 -
团体程序设计天梯赛 L2-029 特立独行的幸福 (25分)
题目链接:L2-029 特立独行的幸福 (25分)今天除夕夜,Yuhan在这里给大家拜个(早)年~祝大家新年快乐,在新的一年里有[特立独行的幸福]~(^ω^)思路:我们可以在O(n)O(\sqrt{n})O(n)的时间内判断一个数是否为素数;其次迭代计算下一个平方和时需要计算这个数之前是否出现过,以保证不会进入死循环,同时也判断该数是不是一个幸福数;在处理区间所有数的过程...原创 2020-01-24 20:53:37 · 628 阅读 · 0 评论 -
团体程序设计天梯赛 L2-020 功夫传人 (25分)
题目链接:L2-020 功夫传人 (25分)思路:记录“得道者”的倍数,然后dfs一遍关系图,中间维护这一代的功力,遇到得道者就乘上倍数加到结果里即可代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;vector<int> G[maxn];int n, ...原创 2020-01-23 20:01:47 · 312 阅读 · 0 评论 -
团体程序设计天梯赛 L2-019 悄悄关注 (25分)
题目链接:L2-019 悄悄关注 (25分)思路:用map记录是否为好友,然后将不是好友且点赞数过平均的人的id记录下来,排序输出即可;代码:#include<bits/stdc++.h>using namespace std;int main() {#ifdef MyTest freopen("Sakura.txt", "r", stdin);#end...原创 2020-01-23 19:02:02 · 289 阅读 · 0 评论 -
团体程序设计天梯赛 L2-021 点赞狂魔 (25分)
题目链接:L2-021 点赞狂魔 (25分)思路:将每个人的相关信息计算出来,排序并输出即可;代码:#include<bits/stdc++.h>using namespace std;struct User { string s; int num; double ave; bool operator < (const User & a) ...原创 2020-01-23 16:37:51 · 321 阅读 · 0 评论 -
团体程序设计天梯赛 L2-022 重排链表 (25分)
题目链接:L2-022 重排链表 (25分)思路:将原结点编号顺序存下来,然后按规则重拍就好;注意给出的n和实际链表长度并不一样,因为存在无效结点,我们需要自己计算n;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e6 + 5;int bg, n, dat[maxn], ne...原创 2020-01-22 17:13:33 · 397 阅读 · 0 评论 -
团体程序设计天梯赛 L2-028 秀恩爱分得快 (25分)
题目链接:L2-028 秀恩爱分得快 (25分)思路:博主一直觉得一些有思维挑战性的题方为好题,像故意设坑/故意恶心写题者的题目只不过是出题人自作聪明罢了,更别提为了强行捏造background而产生很多歧义的题了(并非黑CYLL,我也喜欢CYLL:),也并非针对此题,只不过有些题实在是不喜欢QAQ)//------------------------------分鸽线-------...原创 2020-01-22 16:23:09 · 722 阅读 · 0 评论 -
团体程序设计天梯赛 L2-027 名人堂与代金券 (25分)
题目链接:L2-027 名人堂与代金券 (25分)思路:排序即可,注意计算排名时并列的情况代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e4 + 5;int n, g, k;struct P { int x; string s; bool operator < (...原创 2020-01-22 13:13:47 · 344 阅读 · 0 评论 -
团体程序设计天梯赛 L2-025 分而治之 (25分)
题目链接:L2-025 分而治之 (25分)思路:对每种方案,检查每个未被攻占的城市的相邻城市是否全被攻占即可代码:#include<bits/stdc++.h>using namespace std;inline int read() { int x = 0, f = 1; char c = getchar(); while(c < '0' || ...原创 2020-01-21 20:43:27 · 419 阅读 · 0 评论 -
团体程序设计天梯赛 L2-023 图着色问题 (25分)
题目链接:L2-023 图着色问题 (25分)思路:对于每种方案,我们遍历一遍所有点即可;代码:#include<bits/stdc++.h>using namespace std;const int maxv = 505;int v, e, k, n;vector<int> G[maxv];int c[maxv], vst[maxv];b...原创 2020-01-21 18:50:44 · 236 阅读 · 0 评论 -
团体程序设计天梯赛 L2-024 部落 (25分)
题目链接:L2-024 部落 (25分)思路:并查集裸题代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e4 + 5;int n, par[maxn], rk[maxn];inline void init_set() { for(int i = 1; i < maxn ;...原创 2020-01-21 17:50:57 · 196 阅读 · 0 评论 -
团体程序设计天梯赛 L2-017 人以群分 (25分)
题目链接:L2-017 人以群分 (25分)思路:简单排个序即可代码:#include<bits/stdc++.h>using namespace std;int main() {#ifdef MyTest freopen("Sakura.txt", "r", stdin);#endif int n, ans = 0; cin >> n...原创 2020-01-21 15:50:15 · 306 阅读 · 0 评论 -
团体程序设计天梯赛 L2-016 愿天下有情人都是失散多年的兄妹 (25分)
题目链接:L2-016 愿天下有情人都是失散多年的兄妹 (25分)思路:又是一道很想diss的题目:1.测试数据没有考虑共同祖先是五服以内通婚的情况;2.题目告诉你同性的话如何输出,异性的话如何输出;测试点4里应该是有没有出现在给定信息中的人的,那么就不知道此人性别,那如何输出?//over整体想法就是对于每两个人,先dfs或者bfs第一个人五代以内的人,遍历时做标记,在遍历第...原创 2020-01-21 14:20:02 · 345 阅读 · 0 评论 -
团体程序设计天梯赛 L2-015 互评成绩 (25分)
题目链接:L2-015 互评成绩 (25分)思路:按题意计算,然后排序即可代码:#include<bits/stdc++.h>using namespace std;int main() {#ifdef MyTest freopen("Sakura.txt", "r", stdin);#endif int n, k, m; cin >> ...原创 2020-01-21 12:47:54 · 253 阅读 · 0 评论 -
团体程序设计天梯赛 L2-013 红色警报 (25分)
题目链接:L2-013 红色警报 (25分)思路:每失去一个城市,dfs一遍,检查当前的连通块个数,如果比之前多,则需要警报;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 505;bool lost[maxn], vst[maxn];vector<int> G[ma...原创 2020-01-20 19:26:44 · 229 阅读 · 0 评论 -
团体程序设计天梯赛 L2-011 玩转二叉树 (25分)
题目链接:L2-011 玩转二叉树思路:先建树再bfs即可,注意逆序代码:#include<bits/stdc++.h>using namespace std;const int maxn = 2333;int n, in[maxn], pre[maxn];vector<int> tree[maxn];void dfs(int x, int ...原创 2020-01-20 18:53:24 · 249 阅读 · 0 评论 -
团体程序设计天梯赛 L2-010 排座位 (25分)(并查集)
题目链接:L2-010 排座位 (25分)思路:两个人有敌对也有共同的朋友就输出OK but...;朋友的朋友也是朋友;两个人不可能同时是朋友和敌人;缓缓打出一个?言归正传,虽然题意有点迷,但是不要想太多按部就班做就可以;对于一个朋友集体我们用并查集来维护就好;代码:#include<bits/stdc++.h>using namespace std;...原创 2020-01-20 17:11:07 · 301 阅读 · 0 评论 -
团体程序设计天梯赛 L2-009 抢红包 (25分)
题目链接:L2-009 抢红包 (25分)思路:自定义排序即可代码:#include<bits/stdc++.h>using namespace std;const int maxn = 12345;struct per { int no, ans, cnt; bool operator < (const per & a) const {...原创 2020-01-20 14:08:33 · 299 阅读 · 0 评论 -
团体程序设计天梯赛 L2-007 家庭房产 (25分)
题目链接:L2-007 家庭房产 (25分)思路:对于每个人,将和自己有关系的人都保存下来,将每个人的房产保存下来,然后对所有人dfs即可;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 12345;vector<int> G[maxn];int n, vst[max...原创 2020-01-20 13:50:54 · 394 阅读 · 0 评论