码迷,mamicode.com
首页 > 其他好文 > 详细

CF 603 E题解

时间:2021-01-08 11:30:38      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:大小   work   mat   inf   并查集   过程   卡住了   需要   支持   

CF 603 E题解

又是我做不出来的题。

这题我分析到了“对于每一个询问,查询最小的bound,使得将\(w\leq bound\)的边都加入,使得所有联通快都是偶数”这一步,然后就卡住了。

可以发现,所有询问的答案不增的,若设无解为\(\infty\)。

然而还是不会做。

不过我们回忆一下“决策单调性”来优化dp过程的做法。

定义\(work(l,r,L,R)\)表示已知\(\bigcap_{i=l}^r answer_{i}\in [L,R]\)。然后计算出所有\(l\)到\(r\)之间的\(answer\)。

设\(mid=\lfloor\frac{l+r}{2} \rfloor\),则我们只需要计算出\(answer_{mid}\),就可以递归算出:\(work(l,mid-1,L,answer_{mid}),work(mid+1,r,answer_{mid},R)\)了。

如何计算\(answer_{mid}\)呢?

可以用并查集!

假设我们已经加入了\(w<L\)的所有边,然后我们依次加入\(L\)到\(R\)的边,然后判定有没有大小为奇数的联通快就行了。

这个并查集还需要支持撤销!

另一个相似的题目:arc 045 d みんな仲良し高橋君

CF 603 E题解

标签:大小   work   mat   inf   并查集   过程   卡住了   需要   支持   

原文地址:https://www.cnblogs.com/gary-2005/p/14244058.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!