题意
一个
N
个点
分析
我们先考虑如果原图是棵树怎么做。
首先二分答案,设二分的值为
Lim
。
设
f[u]
为以
u
为根的子树中最多能分成多少部分。
那显然有
其中,
v
为
若最后
因为每个部分是不能相交的,所以上式显然能得出最优的答案。
知道了树的情况怎么做,现在我们想想怎么解决多了一个环的情况。
同样二分答案。
很容易想到将环上所有点各当作根,对它们下面的点(除了根,不经过在环上的点)做一下上述的
dp
,同时对于根节点,不处理
g[u]≥Lim
的情况。最后我们知道了环上每个点向下能得到最多多少的权值,以及向下最多能组成多少个部分。先不考虑权值平方的问题,问题变成了一个带权环,问能否分成
K′
部分,每个部分的权值和
≥Lim
。
将环切成链,再复制一倍。贪心,先处理出从每个点
l
出发,向后到最近的点
再考虑平方的问题,解决方法跟上述方法一样,只不过我们枚举的是要平方的部分的开头,可以知道它要到哪个位置才能使开头到这个位置组成的部分满足条件,剩下的就跟上面一样了。