
并查集
1
1E6
这个作者很懒,什么都没留下…
展开
-
Secret Passwords (并查集)
Secret Passwords题目链接大致题意:给定n个字符串,如果存在一个或多个字母同时在字符串a和b中出现 这a和b就被分在同一组如果a和c在同一组 b和c在同一组 则a和b也在同一组问所有的字符串最后被分成几组解题思路:并查集使用数组存储每一个字母在哪些字符串中出现过,对于每一个字母,将出现过的字符串的祖先全部合并.最后输出不同的祖先数量即可AC代码:#include <bits/stdc++.h>#define rep(i, n) for (int i =原创 2021-06-25 09:31:12 · 186 阅读 · 0 评论 -
牛客挑战赛 C.alan的DP题
alan的DP题题目链接大致题意:n件物品,对应价值是1-n,给出n件物品所对应的父亲物品,(在购买时,孩子可以代替父亲进行购买),给出m个同学对应想买的物品,求一个最大收益,也就是m个同学购买物品花费的最大值解题思路:题目提到i的父亲是p[i],表示如果想购买p[i],也可以选择购买i来代替p[i]数据3e6,线性求求最大收益,贪心想的话,肯定会优先购买最贵的物品,画出的是一个森林,我们拿其中一树来说的话,就是在面临选c[i]物品时,怎么可以直接求出c[i]的哪个儿子价值最大,被卡了半天原创 2021-05-12 08:46:17 · 155 阅读 · 0 评论 -
How Many Answers Are Wrong( 带权并查集)
带权并查集How Many Answers Are WrongHDU - 3038题目大意:区间长度为n,给出m个区间和,即[l,r]区间和为w,对于给出的m个区间和,找到与上面区间和冲突的个数。解题思路:[l,r]=w,可以转化为v[r]-v[l-1]=w.对于m个区间和,我们需要用带权并查集维护[l-1,r]的相对关系。分两种情况:1.r与l-1不在同一个集合,这是需要合并。让fx指向fy,那么?+v[x]=w+v[y],即?=v[y]+w-v[x].2.r与l-1在同一个集合,直原创 2020-08-26 20:06:25 · 315 阅读 · 0 评论