CF 杂题选做
来源:笔者在vp中认为比较好的一些题目
每道题前会有tag,可以根据自己所需使用。(Ctrl+F请按照表格所给tag)
目前存在tag:难度评分,构造,树形DP
CF1515F
tag:构造,2600
给定一张图,点有点权
思维比较妙的题。容易发现,如果所有的点不在一个连通块中,或者所有点的点权和
观察样例,我们发现将所有点合并的过程其实是找出了一棵原图的生成树。那么对于一个有解的图,是否对于任何一棵生成树都是一个合法解呢?我们尝试归纳证明这一点:
在一个图的生成树上,我们对一个叶子进行分类讨论:
那么它能和 直接合并,此时原树变成了一棵 个点的树,仍然满足限制条件。 那么我们直接删去这个叶子和这条边,剩下部分一定是满足题意的,我们最后将 和 合并即可。
我们的解法也可以基于这一点:在dfs生成树的时候,我们从叶子开始,满足条件的边加入队列中,不满足的放入栈中,按顺序输出队列中和栈中的边即可,由上面的归纳证明可知这样的方案一定是正确的。
CF1276D
tag:树形DP,2900
给定一棵树,树上的所有点都没有颜色,按编号从小到大考虑每条边:如果连接的两点都没被染色,就任取一点染色,加入序列,否则跳过。问不同的染色序列数量。
定义一个点被一条边染色为,选择这条边是将该点染色。
定义一条连接
考虑对于树上的一个点
- 这个点被父亲边染色了
- 这个点被编号小于父亲边的边染色了
- 这个点被编号大于父亲边的边染色了
- 这个点还没有被染色
我们可以据此设计dp状态:设
- 对于
- 钦定
这条边将 删去, 此时还未被染色,或者比 更晚染色,取 。 - 如果
,则染色的均为 ,或 在此之前已经被染色,取 。 - 如果
,则 不会被 这条边染色,取 。
- 钦定
- 对于
,转移为 。 - 对于
,转移为 。
读者自证不难,答案为
CF1495D
tag:最短路,2600
给定一张图,定义这张图的生成树为从根到任意点的距离均为原图最短路的树,记
我们研究树的性质,发现如果原来在图上的边是
此时
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探