Description
有一个长度为\(n\)的无前导零数字串。
现在给你\(m\)组信息,形如\((a,b,c,d)\)(保证\(a\leq b, c\leq d,b - a = d - c\)),表示数字串\(a\ldots b\)这一段子串和\(c\ldots d\)这一段子串是一样的。
求最后的数字串有多少种可能。
\(1\leq n, m\leq 10^5, 1\leq a,b,c,d\leq n\)。
Solution
ao劲啊这种题,,,
肯定要上并查集辣……但是暴力建图一定会炸,线段树优化建图在这也不好用(两边子树的形态可能差异巨大)。那么考虑用倍增优化建图。
建出形如\(v(i, j)\)的点表示从\(i\)开始长度为\(2^j\)的子串。然后这样用类似于ST表的方式就可以处理所有信息了,具体方式就是把对应的两组点在并查集上连一下。
然后考虑最后如何统计答案。这个也不难,你把并查集的关系逐层往下推就行。
Code
1 |
|