CCCC天梯赛
文章平均质量分 50
分享天梯赛的题解
MangataTS
一个爱折腾的Coder
展开
-
L2-019 悄悄关注(STL)
题目连接https://pintia.cn/problem-sets/994805046380707840/problems/994805059731177472思路对于关注列表的名字,我们通过一个map<string,bool>进行标记是否出现,然后下面的用户和点赞信息可以通过pair<string,name>进行存储,最后遍历一遍点赞的用户,找出其中不在关注用户且点赞数量大于平均的人,最后排序输出即可,如果没有的话输出Bing Mei You代码#include<原创 2022-04-05 20:41:06 · 748 阅读 · 0 评论 -
L2-018 多项式A除以B(模拟)
题目连接https://pintia.cn/problem-sets/994805046380707840/problems/994805060372905984思路其实就是一个多项式的除法运算,我们尽可能将 BBB 的最大项凑到和 A的对应位置项同阶,然后做一个减法运算即可,详情请参考代码,注意的是这里有几个坑点:余数的阶数小于商的阶数:测试点3、4去除商中的零项:测试点1、4B的最大阶比A大:测试点2、3代码#include<bits/stdc++.h>using na原创 2022-04-05 16:58:46 · 800 阅读 · 0 评论 -
L2-017 人以群分(贪心)
题目连接https://pintia.cn/problem-sets/994805046380707840/problems/994805061056577536思路贪心地去想,我们如果将这些人先按照从小到大排序,再分成两部分的话,那么一定是极端地两部分,又由于两堆人数要经可能接近,于是当 nnn 为偶数的时候那么直接拆分成相同的人数的两堆即,否则我们应该让outgoing那一堆的人数多一点,便于我们提高差距代码#include<bits/stdc++.h>using namespa原创 2022-04-05 00:19:19 · 357 阅读 · 0 评论 -
L2-016 愿天下有情人都是失散多年的兄妹(DFS)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805061769609216思路我们把这个家族关系看成一颗二叉树,树的根节点是子元素,“左儿子” 是父亲,“右儿子” 是母亲,然后我们定义 isman[i]isman[i]isman[i] 如果为 true 表示编号为id 的性别为男,反之为女,然后我们每次输入一行数据就连边,起点是当前编号,终点是父母编号(存在的话),然后我们在Q 次询问的时候,首先判断两个编号是否为原创 2022-04-05 00:04:16 · 1092 阅读 · 0 评论 -
L2-015 互评成绩(排序)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805062432309248思路我们只需要在每一个同学的评分中算出总和评分和最低最高评分即可,对于最高评分,我们定义一个 maxwmax_wmaxw 初始化为 0.00.00.0 然后遍历的过程中不断取 max最低分同理,然后我们取一个平均值,放入数组或者容器中,最后排序输出前 mmm 名同学即可代码#include<bits/stdc++.h>u原创 2022-04-03 18:56:07 · 375 阅读 · 0 评论 -
L2-014 列车调度(二分)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805063166312448思路其实这道题目很容易让人摸不着头脑求什么,意思就是我们要求最少的轨道数,而这个轨道上面可以摆放无线量车,但是车进轨道是有先后顺序的,我们最后只需要从我们分配的轨道中将这些车按照降序能从出口出去就是成立的轨道。比如说这里我们分成四个轨道:轨道1: 1 2 4 8轨道2: 3 5轨道3: 6 9轨道4: 7这样我们在车辆出去的时候原创 2022-04-03 15:36:16 · 393 阅读 · 0 评论 -
L2-013 红色警报(DFS+染色)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805063963230208思路对于每一个城市我们都有一个over 标记 over[i]=true表示的是第 iii 个城市已经被攻占下了,对于每一个城市被攻占后我们就将其标为true并且将其所有联通的城市全都标记为true(其实就是一个图的遍历),然后每次我们拿攻占前和攻占后的连通块的数量进行对比,如果发现连通块的数量增大了(除去被攻占的这个城市),那么说明国家被分割原创 2022-04-03 14:47:58 · 796 阅读 · 0 评论 -
L2-012 关于堆的判断(模拟堆+字符串处理)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888思路我们首先通过模拟实现堆(这里只需要实现堆的插入即可),然后对于四种情况:x是根结点,我们只需要判断堆中第一个元素是否为x即可x是y的父结点,我们只需要判断y>>1y>>1y>>1 是否等于 xxx 因为根节点是从1开始的,下面同理x是y的一个子结点,我们只需要判断x>>1x>&原创 2022-03-29 20:12:57 · 1340 阅读 · 1 评论 -
L2-011 玩转二叉树(建树+BFS)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805065406070784思路由于给出了中根遍历以及先根遍历,我们先通过先根遍历定位到树的根节点,然后再通过中根遍历划分二叉树,然后再不断地往左往右递归处理左右子树,最后建立完这颗二叉树后,我们再在BFS 的时候优先把右子树放入队列,这样就能达到镜像反转的层序遍历,详情请看代码代码#include<bits/stdc++.h>using namesp原创 2022-04-03 14:35:27 · 1184 阅读 · 0 评论 -
L2-010 排座位(并查集)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805066135879680思路对于朋友和朋友之间的关系我们通过并查集维护即可,然后对于敌人之间的关系,我们只需要用一个二维数组或者使用map就能维护,因为只有直接敌对关系才是敌人,然后对于每一次询问我们就根据他们俩的朋友关系、敌对关系分类讨论即可代码#include<bits/stdc++.h>using namespace std;#define原创 2022-03-28 21:03:59 · 437 阅读 · 0 评论 -
L2-009 抢红包(模拟)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805066890854400思路我们开一个结构体Node去存储编号id、收到红包数量num 以及获得的总红包金额money,然后按照每一行的人收到的红包我们进行相应的处理,将发红包的人的money金额减少,然后将收红包的人的money增加,并且将收红包的人的红包数量增加,最后排序输出就好啦代码#include<bits/stdc++.h>using n原创 2022-03-28 20:25:32 · 457 阅读 · 0 评论 -
L2-008 最长对称子串(马拉车 or 技巧暴力)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805067704549376思路法一因为要求的是最长的对称子串,其实就是求最长回文子串,我们很容易就能和马拉车算法联系起来,由于这里数据比较水所以直接套板子就能过,如果没学过马拉车的话可以带一点技巧的暴力过去法二对于一个回文串,要么是奇数长度要么是偶数长度,那么我们只需要枚举中心位置以及回文半径即可,复杂度是 O(N2)O(N^2)O(N2)法三我们提前用字符原创 2022-04-03 13:59:15 · 570 阅读 · 0 评论 -
L2-007 家庭房产(并查集)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872思路我们能获取 N 条信息,对于每一条消息我们能知道当前这个人的编号id 以及父亲的编号 faa 母亲的编号 ma 并且知道 k 个儿子的编号,然后我们又知道这个人的房子的总套数以及房子的总面积 ,这其实是一个很经典的数据结构-》 并查集,我们维护的每一个集合就是一个家族,我们讲当前读入的这个人的父亲和母亲合并在一个集合里面,再将他和他的儿原创 2022-03-26 21:37:26 · 1394 阅读 · 0 评论 -
L2-006 树的遍历(建树)
题目连接https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456思路我们只需要西安通过后根遍历和中根遍历进行建树,然后再BFS即可,这里由于点很少(其实是数据水)所以不用指针或者链式前向星,直接莽过去,但是正解应该是直接在递归的过程中就求出层序遍历,或者说是通过指针或者链式前向星建图代码暴力建树#include<bits/stdc++.h>using namespace std;#d原创 2022-03-24 20:17:51 · 851 阅读 · 0 评论 -
L2-005 集合相似度(STL+暴力)
题目连接https://pintia.cn/problem-sets/994805046380707840/problems/994805070149828608思路这道题其实难点在于理解题意,其中的 NcN_cNc 其实就是两个集合的交集的元素个数, NtN_tNt 就是两个集合合并后的元素个数(去重),那么我们利用set 或者 map就能很好的实现这个操作,我们定义 N 个 set 然后我们查找 l 和r的重复度的时候直接选取一个集合作为操作集合查找一下两个集合中元素的重复个数就得到了 NcN原创 2022-03-24 19:17:50 · 334 阅读 · 0 评论 -
L2-004 这是二叉搜索树吗?(二叉树)
题目连接https://pintia.cn/problem-sets/994805046380707840/problems/994805070971912192思路这道题我们要从二叉搜索树的特性出发,其实也就是题目中提到的:其左子树中所有结点的键值小于该结点的键值其右子树中所有结点的键值大于等于该结点的键值其左右子树都是二叉搜索树又因为这颗二叉树可能镜像翻转,于是我们需要判断镜像和非镜像是否为二叉搜索树,也就是至多两次判断,其实两次都是几乎一样的,因为左子树的所有节点的最大值是小于右子树原创 2022-03-24 16:36:45 · 4755 阅读 · 6 评论 -
L2-003 月饼(贪心)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805071789801472思路我们用一个结构体存储每一个月饼的 库存量 和 总售价,然后再定义一个变量c存储单位体积的售价,然后我们将每一种月饼按照单位体积售价从大到小排序,从前往后能选多少是多少代码#include<bits/stdc++.h>using namespace std;#define ll long long#define mod原创 2022-03-20 23:05:34 · 1278 阅读 · 0 评论 -
L2-002 链表去重(链表+模拟)
题目链接https://pintia.cn/problem-sets/1505394324111241216/problems/1505395090679934976思路我们用一个map 记录地址映射,在键的位置记录当前地址,值的位置记录下一个地址的位置,然后我们用一个 vis 数组标记我们的值的绝对值是否被加入了 win 链表,如果没有加入那么我们就将其加入 loser 链表,这样的话就将链表去重了,最后实现一个打印操作即可,注意这里我们可以通过scanf的格式化输出%05d来方便我们补前缀0代码原创 2022-03-20 22:46:05 · 502 阅读 · 0 评论 -
L2-001 紧急救援(最短路)
题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840思路我们只需要在跑迪杰斯特拉最短路的时候注意一下松弛操作即可,我们定义 dis[i]dis[i]dis[i] 表示从起点 sss 到 iii 点的最短路径,sum[i]sum[i]sum[i] 表示从 sss 点到 iii 点的最多的救援队数量,cnt[i]cnt[i]cnt[i] 表示从 sss 点到 iii 点的最短路的条数,pre[i]原创 2022-03-20 22:32:41 · 2315 阅读 · 1 评论 -
2021第六届GPLT 团体程序设计天梯赛CCCC 个人题解
目录L1-1 人与神CodeL1-2 两小时学完C语言CodeL1-3 强迫症思路CodeL1-4 降价提醒机器人CodeL1-5 大笨钟的心情思路CodeL1-6 吉老师的回归解题思路CodeL1-7 天梯赛的善良解题思路CodeL1-8 乘法口诀数列解题思路CodeL2-1 包装机解题思路CodeL2-2 病毒溯源解题思路CodeL2-3 清点代码库解题思路CodeL2-4 哲哲打游戏解题思...原创 2021-04-26 13:53:00 · 1445 阅读 · 6 评论