摘要: 原题链接 考察:并查集+贪心或堆排序+贪心 因为最近在做并查集专题所以直接考虑用并查集写,但是看题目完全没有想到用并查集的方式,以前写的并查集题目关系的传递性都很明显,但是这道题本蒟蒻完全没看出来 思路: 用并查集维护天数,贪心策略是能多晚卖出就多晚卖出,起初每个天数都在它自己的集合里,当我们决定要 阅读全文
posted @ 2021-01-03 22:04 acmloser 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察: 并查集+离散化 错误思路1: 在线处理,每次收到新的命令就判断对错,不知道在线处理能不能行,但是在线有个麻烦的点是要判断这个数字是否在alls里面出现过,如果出现过判断多错,没有就是要新加入关系.并且在线处理还需要标记哪些变量不能相等 错误思路2: 将1~N的数字全部赋值p[i] 阅读全文
posted @ 2021-01-03 20:20 acmloser 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察: 并查集 通过这道题算是把食物链没搞懂的问题又弄明白了点 很明显根据题意我们需要维护一个距离数组,表示父节点到子节点的距离. 当操作是C的时候,我们实际上在进行C操作之前是进行过路径压缩的,因此d[x]的距离变成了x到根节点的距离,d[y]的距离就算y到根节点的距离,因此两者的距离差 阅读全文
posted @ 2021-01-03 14:39 acmloser 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:并查集的基本应用 想到了再建一个敌人数组,但没想到怎么操作...菜是原罪 正确思路: 如果是朋友,我们直接并入一个集合 如果是敌人,我们需要建立一个N叉树,分支是敌人数组的下标,里面的值是根,比如e[5] = 1,表示根为1,分支为5的树,n次操作后,我们会形成一个n叉树,此时我们需 阅读全文
posted @ 2021-01-03 12:27 acmloser 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察: 并查集基础 和前面suspects差不多的题目,就是将计算集合内人数换成计算集合个数,用数组标记集合的编号即可 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace st 阅读全文
posted @ 2021-01-03 10:45 acmloser 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:并查集基础 在读入学生团体的时候,没必要用数组存储,直接将他们并入树中即可,注意:当我们计算人数的时候,已经在一个集合中的人不能重复计算 当时看y总犯了这个错误,结果自己写又错了233 1 #include <iostream> 2 #include <cstdio> 3 using 阅读全文
posted @ 2021-01-03 10:14 acmloser 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:并查集基础 思路: 只有维修后的电脑才是有用的,因此我们用数组来标记维修后的电脑,当它们能连通需要以下条件: x电脑和y电脑都是维修后的 x电脑与y电脑距离的平方小于d*d 如果距离大于d*d,那么它们之间存在中介点,且中介点也被维修过 1 #include <iostream> 2 阅读全文
posted @ 2021-01-03 09:15 acmloser 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 原题链接 并查集模板题 当两个点互相可达,我们称它们连通.本题判断连通点的个数,就是判断同一集合下点的个数,一棵树下子节点各不同,因此用数组sizes记录下标为根节点的点的个数 1 #include <iostream> 2 using namespace std; 3 const int N = 阅读全文
posted @ 2021-01-03 07:59 acmloser 阅读(127) 评论(0) 推荐(0) 编辑