NOIP2024集训Day44-45
#
欧拉回路。
有解:每个点连接的黑边数为偶数
答案个数:连通块数
如果一个连通块内有两条路径,则可以在起点之间走两次,则它们一定可以合并成一条。
#
看起来很有让人 dp 的冲动。
假设可以用 dp。
但是很容易发现这个 dp 有后效性,也不知道哪个点开始 。
那就把所有点扔进 SPFA 中跑。
#
喵喵
不是,这种东西是那个天才想出来的。
二进制分组。
根据二进制下每一位的数分别将节点分成两组。
一组作为原点,一组作为终点。
可以发现两个点一定会在不同集合至少一次。
也就是说,答案的起点和终点一定会在不同集合至少一次。
取每次跑最短路的之就行了。
#
如果往
建出关键边和起点到终点的边,由于求欧拉回路,则必须满足全为偶点。
将奇点两两配对连边,由于边权是
还剩没联通的很多连通块,则在这些连通块中求最小生成树即可,可行边只在相邻的连通块之间,边数其实为
对每个终点跑一边,复杂度为
#
发现切的顺序是没有影响的,到最后都是一堆链随便连。
考虑现在要切节点
-
,此时什么都不用做。 -
,发现当切掉 后,剩下的就是一条链了。 -
,先切 ,剩下再切 刀。
为什么要切
#
用 or 边将整棵树分成很多连通块,发现最终点权为
考虑求出满足所有连通块中有至少一个块的值为
考虑 dp,设
答案为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律