赞
踩
传送门:CF1120
一道贪心坑了好多人啊(包括我)。
首先存在以下情况是无解的:
不考虑 0 − 1 , 9 + 1 0-1,9+1 0−1,9+1的合法性,贪心依次让 1 − ( n − 1 ) 1-(n-1) 1−(n−1),即 ( 1 , b 1 − a 1 ) , ( 2 , b 2 − ( a 2 + ( b 1 − a 1 ) ) ) (1,b_1-a_1),(2,b_2-(a_2+(b_1-a_1))) (1,b1−a1),(2,b2−(a2+(b1−a1)))( ( i , j ) (i,j) (i,j)表示将 a i , a i + 1 a_i,a_{i+1} ai,ai+1同时 + j +j +j)。
a n a_n an是不能单独操作的,若 a n ≠ b n a_n\neq b_n an̸=bn,则必然无解。
可以证明除了上面的情况以外一定有解(证明略):
每次贪心操作最前可以操作的位置,步数一定是最少的。
SAM DP裸题,不解释。
转化一下题目的要求(设叶子结点个数为 k k k):,选择 k k k个结点,使得每个结点子树内不经过其它选择的结点所能到达的叶结点都是唯一且各不相同的,要求最小化 ∑ C i \sum C_i ∑Ci
考虑 f [ i ] [ 0 / 1 ] f[i][0/1] f[i][0/1]表示以 i i i为根的子树还剩 0 / 1 0/1 0/1个叶子结点没被覆盖的最优答案。
答案即 f [ 1 ] [ 0 ] f[1][0] f[1][0]
如何寻找哪些点可能出现在最优点内呢?似乎可以再DP一遍。
考虑从状态 g [ 1 ] [ 0 ] g[1][0] g[1][0]出发进行 b f s bfs bfs(设 s u m u = ∑ v ∈ s o n u f [ v ] [ 0 ] sum_u=\sum \limits_{v\in son_u}f[v][0] sumu=v∈sonu∑f[v][0]):
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。