Atcoder abc293
https://atcoder.jp/contests/abc293/tasks
Ex - Optimal Path Decomposition
n 点树
找最小整数k,使得有方案满足染色
- 每个相同具体颜色,连通且简单路径
- 树里所有简单路径 最多K种颜色
n 2e5
2s
1024mb
我的思路
这第一眼上去像是重轻儿子
第二眼上去像是树上DP
虽然具体的染色的情况 不和 K直接相关
但是 当两个不同颜色链的端点相邻,那么把它们染成同样的颜色,得到的K不会比之前的更差
dp[u][u是否可以向上连] = {u的子树中最多颜色的路径,从u向下最多颜色的路径}
显然 子树cnt >= u向下
看起来是一个 O(n^2)
的状态
而从u 向下最多颜色的路径 <= u到最深叶子的
如果有办法 把这个缩减这个向下颜色的路径的维度
然而根据轻重儿子的链式方法,根到任何叶子最多经过O(log(n)) 条不同的重链
所以如果直接 轻重链方案,那么方案 <= 2log n
所以 dp[u][u是否可以向上连][u向下最多的颜色的路径 <= 2log n] = u子树中最多颜色的路径
似乎就能做了?
代码
https://atcoder.jp/contests/abc293/submissions/41841031
1 |
|
总结
Ex
虽有轻重链的知识,但整体核心的部分和 CF1830D 是一样的,就是通过数学降低dp的剩余维度的大小
竟然又自己做出了一个红题,虽然只是abc的2831评分