码迷,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
迷上了代码!