首页 > 其他分享 >P3295&xyd蹦蹦炸弹

P3295&xyd蹦蹦炸弹

时间:2024-07-19 14:43:53浏览次数:11  
标签:连通 P3295 查集 炸弹 xyd 蹦蹦

看到这些\(n^{2}\)的并查集,且每次并查集都是连续的,那么我们就可以利用倍增进行并查集(类似st表,贡献可重复问题)。然后我们可以将所有并查集都加进去后在进行下传。比如在P3295中,我们需要算出最后有多少个连通块,那么我们如果[i][k]和[j][k]在一个连通块里,那么[i+(1<<(k-1))][k-1]和[j+(1<<(k-1))][k-1]在一个连通块里,[i][k-1]和[j][k-1]在一个连通块里然后不断下传就可以了。然后对于xj的这题来说,要求的是最小生成树,那么如果当前的两个在同一连通块,就不用下传了。不一样的话,那就下传到最底部,并且加上权值。这个的时间复杂度是有保证的,因为你每次传下去都会连边,每次都会将一些并到同一个集合里面,这个操作不会超过O(n log n)次

标签:连通,P3295,查集,炸弹,xyd,蹦蹦
From: https://www.cnblogs.com/wuhupai/p/18311412

相关文章

  • P3295 [SCOI2016] 萌萌哒(倍增并查集)
    题意简述有一个长为\(n\)的数字序列\(s\),有\(q\)组限制\(l_1,r_1,l_2,r_2\)形如\(s_{l_1,\cdots,r_1}=s_{l_2\cdots,r_2}\),求满足所有限制的\(s\)的方案数,数字序列不能有前导0。\(n,q\le10^5\),保证\([l_1,r_1]\)和\([l_2,r_2]\)大小相等。分析字符之间的等量......
  • 每日一题:C语言经典例题之小球蹦蹦跳跳
    题目描述调皮的小明将皮球从100m的高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第N次落地时,共经过了多少米,第N次反弹多高。输入一个正整数N,表示球落地的次数。输出 length=球第N次落地时所经过了距离high=球第N次落地反弹的高度小数点后保留4位......