yd#1+AHOI2009最小割
yd#1T3 这个题,剥叶子的一步似乎比较显然,然后,数据范围其实我们,分两类考虑
\(2m\le n\)这个是,有可能两个连通块不叫,然后考虑最特殊的两个,最开头和结尾的,然后发现,中间的过渡区是一条链!
然后就好DP了,直接枚举左部的值为m的点,稍微处理一下即可
\(2m > n\)考虑所有连通块都有交,那把交拿出来,大小为\(2m-n\)相当于再这个连通块,前后分别剥掉n-m个点,做个背包即可
\(O(n^4-n^5)\)具体不分析了,差不多
yd#1T4
性质C是关键的,其实我们,给每个点设置一个\(lim=\frac s c\)然后只有超过lim(减到<=0)就更新,这部分是\(O(nlog^2n)\)的
一个想法是根号分治,但是我没写,不知道能不能过
考虑更巧妙的设置lim
由于这个lim完全和s相关,总是变化,尝试换一种lim,不然也没法做了
直接给出结论,令\(lim=2^k,k=max_o{c2^o<=s}\)然后,每次有一个lim<0了,先更新s,然后重新设置成lim
每次操作完后,考虑所有改动过的s,然后如果lim要更新就暴力改否则不变
\(O(nlog^2n)\)
其实有一点倍增分块的感觉,反正出现翻倍就试一下把
除此之外,判定最小割可行边/必须边的方法是
先跑出残量网络,并缩点
可行:rt[u]!=rt[v]
必须rt[s]=rt[u],rt[t]=rt[v]
浙公网安备 33010602011771号