hdu6109(并查集+set/倍增)

Posted 人活着就是为了Chelly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu6109(并查集+set/倍增)相关的知识,希望对你有一定的参考价值。

题目

  http://acm.hdu.edu.cn/showproblem.php?pid=6109

分析

  对于相同的条件,明显直接并查集

  对于不同的条件,可以用set来保存,并查集合并的时候也要对set启发式合并

  还有另一种很奇妙的做法

  如果我们只考虑一段[l..r]是否可行,那么我们可以离线,先挑出相同的条件构出并查集,然后对所有的不同条件进行判断就行了

  这样我们就可以写出一个时间复杂度为O(r-l)的check(l,r)

  那我们怎么分段呢?

  我们对于当前起点now,进行倍增寻找长度最小的L(L=2^k)使得[now...now+L]这一段不能构成一段

  然后我们再对[now..now+L]进行二分寻找准确的分界点

  时间复杂度O(nlogn)

以上是关于hdu6109(并查集+set/倍增)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 6109 数据分割 并查集 (2017"百度之星"程序设计大赛 - 初赛(A))

HDU2874 Connections between cities(并查集+倍增LCA算法求森林最短路)

HDU 4879 ZCC loves march (并查集,set,map)

hdu 3461 Code Lock 并查集(有点难想到)★★

BZOJ4569萌萌哒(并查集,倍增)

[SCOI2016]萌萌哒(倍增+并查集)