CCPC2023-Shenzhen

- \(a_i\in[0, n]\)
分治,考虑做值域为 \([L,R)\) 的一部分,保证初始情况下所有数都是 \(L\),然后把所有值域在 \([mid, R)\) 的数抬到 \(mid\),再做分成的两部分。

基环树,枚举每一条环上的边删掉,不能出现度数大于等于 \(5\) 的点,度数等于 \(4\) 的点不能作根,计数即可。

考虑第 \(i\) 列,字符 \(c\) 没有出现的串组成的集合为 \(S(i, c)\),用 bitset 维护。
每次询问的时候再利用 bitset 维护哪些串可能为答案,由于 \(k\) 很小,枚举列,bitset 求交后枚举每个未匹配的串。
时间复杂度 \(O\left(QMK+\dfrac {QMN}\omega\right)\),空间复杂度 \(O\left(\dfrac{NM|\Sigma|}\omega+(N+Q)M\right)\)

\(a^k-b^k = (a-b)\sum\limits_{i+j=k-1,i,j\in\mathbb N} a^ib_j\),因此 \((a-b)|n\)。
不妨设 \(a = b+t\),二项式展开后有 \((b+t)^k-b^k>t^k\)。因此 \(a-b\) 不大于 \(10^6\) 且为 \(n\) 的因数。枚举之,二分出 \(b\) 的值即可。
时间复杂度 \(O(\sqrt[k]N + d(N)\log N))\)

维护叶子节点的平均深度,递推即可。

考虑答案的一个上界,即取一个颜色 \(x\) 出现 \(c_1\) 次,一个颜色 \(y\) 出现 \(c_2\) 次,答案为 \(\max\limits_{a\in[0,c_1],b\in[0,c_2]}a\operatorname{ or }b\)。
这个从高到低考虑,若存在某一位恰好两个数 \(c_1,c_2\) 都为 \(1\),就选择一个退一位,把后面的 \(0\) 改成 \(1\)。
说明一下这个上界是可以取到的:

如果第一个数先出现第四高位的话(10110000000),等第二个数跑到 00001111111,反之等第一个数跑到 10101111111。

浙公网安备 33010602011771号