ARC 117 - Miracle Tree
ARC 117 - Miracle Tree
话说我只能蒙结论。。。
打表或者理性分析可以发现一些性质
- \(\nexists E_i=E_j\)
2.如果确定 \(E_i\) 从小到大的顺序 \(P_i\) ,就能确定一组最优的 \(E_i\)
(但是对于平凡的 \(P_i\) ,这个过程会极其恶心,因此考虑特殊化 \(P_i\) )
3.设 \(\displaystyle f(P)=\sum_{i=2}^n dis(P_{i-1},P_i)\) ,即遍历排列的距离和
则 \(\max\{E_i\}\ge \min\{f(P)\}+1\)
显然
由此确定了一个下界,接下来将说明可以取到下界
1.对于一个排列 \(P_{i}\) ,如果 \(P_i\) 是一组 \(\text{dfs}\) 序,那么满足 \(\max\{E_i\}=f(P)+1\) (容易模拟发现)
- \(\min\{f(P)\}\) 在 \((P_1,P_n)\) 恰好为一条直径时取到,显然存在这样一组 \(\text{dfs}\) 序满足要求
由此确定了答案 \(P\) 可以是任何一组以某一条直径两个端点为 \(P_1,P_n\) 的 \(\text{dfs}\) 序
容易给出一个合法解,代码实现极为暴力
1 | const int N=2e5+10,INF=1e9+10; |