![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
文章平均质量分 54
RCyyds
这个作者很懒,什么都没留下…
展开
-
G - Supermarket
传送门:Supermarket题意:有n件商品,每件商品的利润为p_i,销售日期的截止时间为d_i(即只能在d_i时间前销售该物品)。一天只能销售一件物品。问这n件商品的最大利润为多少思路:具体见代码和注释。代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 10010;in原创 2022-05-30 16:14:35 · 181 阅读 · 0 评论 -
F - True Liars (种类并查集+DP)
传送门: True Liars题意:给出n对关系,p1个好人,p2个坏人。要求根据n对关系中找出好人有哪些,若方案唯一,则逐个输出好人,最后输出end;若方案不唯一/找不到,那么输出no思路:第一次碰到这种类型的题目,想了很久没什么思路,参考了其他人的博客才弄懂了。以下为所参考博客的思路:通过简单的分析可以得出,对于每对关系(x,y,yes/no),若关系为yes,则x和y属于同一类人;若关系为no,则x和y属于相反类人。根据初步的n对关系,我们只可以推出哪些属于同一类人,哪些属于相反类人,原创 2022-05-30 10:24:51 · 191 阅读 · 0 评论 -
E - 食物链
传送门:食物链题意:题意简单,直接看题目即可。思路:这是个经典的带权并查集题目了。根据惯例,我们需要两个数组,一个是父亲节点数组p,另一个为记录x到p[x]的权值的d[x]数组,在这里规定x吃p[x]。这道题的难点在于吃与被吃的数组d之间的关系。1.假如x与y是同类且用共同的祖宗节点,那么就判定d[x]-d[y])%3是否等于0,等于0就代表与所说的话一致,反之不一致,ans++;2.假如x与y是同类且没用共同的祖宗节点,就让px的父亲节点为py,算出d[px],d[px]=d[y]-d[x原创 2022-05-27 09:19:56 · 177 阅读 · 0 评论 -
D - How Many Answers Are Wrong
传送门:How Many Answers Are WrongTT and FF are … friends. Uh… very very good friends -________-bFF is a bad boy, he is always wooing TT to play the following game with him. This is a very humdrum game. To begin with, TT should write down a sequence of integ原创 2022-05-25 09:56:17 · 284 阅读 · 0 评论 -
B - The Suspects
传送门: The Suspects题意:一开始只有0号学生被视为可能的患者,与0号患者直接或间接接触的人都视为可能患者,求出所有可能的患者。思路:思路很简单,将学生之间接触的都放在一个集合里,然后求出0号学生的根节点,循环判断有多少个学生的根节点与之相同即可。代码:#include<iostream>#include<stdio.h>using namespace std;int n,m,p[30005];int find(int x){ if(p[x]!=x原创 2022-05-24 08:59:13 · 97 阅读 · 0 评论 -
A - Wireless Network
传送门:Wireless Network题意:题目说的是给出一些坏电脑的坐标,再给出任意个操作,操作为修复一台电脑,或者判断两台电脑是否可以联网。思路:可以当做并查集模板题来做,很简单。我们需要三个数组,一个来记录电脑坐标,一个来记录电脑是否修好了,最后一个来记录该电脑的的祖宗节点电脑。第一种操作"O p" (1 <= p <= N),其实就是记录哪台电脑修好以及合并集合的过程;第二种操作 “S p q” (1 <= p, q <= N),就是询问两个电脑所在的集合是否相原创 2022-05-23 15:46:08 · 103 阅读 · 0 评论