07-19 题解
B
思路
实质 : 有一个完全图, 删掉一些边, 然后在图上找一棵生成树
但是图的边数是
找生成树的步骤:从一个点开始, 把与它相连的, 不在同一连通块的点连在一起
所以我们只要确保每次都能在尽量少的步数内找到一个合法点
一共有 n 个点, 确定一个点之后, 在剩下的点里面随便找一个, 最多总共只会失败 m 次
其余细节略过 ^_^
代码
D
思路
先把题意理解清楚:
找 k 个不相交的连通块, 点权平均值最大
显然, 选大小相等的连通块才能使得平均值最大, 否则我们只取一堆连通块中最大的平均值会更小
所以我们要做的就是找出树上最大的连通块, 再统计个数即可(因为有负点权, 所以求最大连通块是有意义的)
第一问用普通的树形 Dp 即可完成
统计个数时, 只需要从下往上统计, 遇到 dp[x] = k 的个数 + 1, 再把他的 dp 值设置为负无穷即可(避免多次统计), 这样对点权的利用率最大, 不劣
代码
F
思路
首先, 每一轮都可以重新分组, 所以这不是一个树形结构!!!
然后贪心即可
实力最大的肯定要贿赂, 然后实力最大的 n / 2 个人都可用了
考虑其后 n / 4 个人时, 这 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话