07-19 题解
B
思路
实质 : 有一个完全图, 删掉一些边, 然后在图上找一棵生成树
但是图的边数是 \(n^2\) 级别的, 极其稠密
找生成树的步骤:从一个点开始, 把与它相连的, 不在同一连通块的点连在一起
所以我们只要确保每次都能在尽量少的步数内找到一个合法点
一共有 n 个点, 确定一个点之后, 在剩下的点里面随便找一个, 最多总共只会失败 m 次
其余细节略过 ^_^
代码
D
思路
先把题意理解清楚:
找 k 个不相交的连通块, 点权平均值最大
显然, 选大小相等的连通块才能使得平均值最大, 否则我们只取一堆连通块中最大的平均值会更小
所以我们要做的就是找出树上最大的连通块, 再统计个数即可(因为有负点权, 所以求最大连通块是有意义的)
第一问用普通的树形 Dp 即可完成
统计个数时, 只需要从下往上统计, 遇到 dp[x] = k 的个数 + 1, 再把他的 dp 值设置为负无穷即可(避免多次统计), 这样对点权的利用率最大, 不劣
代码
F
思路
首先, 每一轮都可以重新分组, 所以这不是一个树形结构!!!
然后贪心即可
实力最大的肯定要贿赂, 然后实力最大的 n / 2 个人都可用了
考虑其后 n / 4 个人时, 这 n / 2 个人和去掉他们以后实力最强的那一个(\(a_{n / 2}\)) 都可选, 从里面取出花费最小的即可
以此类推
代码
G
思路
首先, 两个点的权值相同当且仅当他们连接的边集相同(包括自己)
按这个重新分组, 组和组之间连边
如果一个组的出度 > 2, 则无解(中心点为 x, 其他两个为 x - 1, x + 1, 剩下的一个就没办法了)
再者, 如果有环(一定是 >= 4 元的, 3 元的边集相同, 归在同一组), 那么也无解
细节略
代码
题目出处
CF653E Bear and Forgotten Tree 2
CF965E Short Code
CF1260E Tournament
CF623B Array GCD
CF1088E Ehab and a component choosing problem
CF1139D Steps to One
CF794D Labelling Cities
标签:连通,07,19,题解,即可,最大 From: https://www.cnblogs.com/Bubblee/p/18312327