1 条题解
-
0
题解
思路
先把可达性转化为环上连续
1段条件,再用 Burnside 引理统计循环等价类。三个子任务依次用直接枚举、逐周期有界组成 DP、统一短段预处理完成固定点计数。1. 等价条件
一个结果串可由初始串得到,当且仅当它满足:
1的总数不超过 ;- 在环上至少存在连续 个
1。
第二条保证把这段连续的
1旋转到开头后,能够保留初始串的前 个1。因此问题等价于统计满足这两个条件的二进制项链。2. 子任务 1:枚举所有二进制串
当 时,枚举全部 个二进制串。检查
1的数量和环上最长连续1,再把所有循环移位中的字典序最小者作为等价类代表,插入集合即可。时间复杂度为 ,空间复杂度为 。
3. Burnside 引理
考虑旋转 个位置,令 ,。被该旋转保持不变的字符串由一个长度为 的块重复 次得到。
若基础块有 个
1,原串就有 个1,因此设被这次旋转保持且满足条件的字符串数为 。答案为
除法在模 意义下用逆元完成。
4. 子任务 2:逐个周期做有界组成 DP
当 时,若周期串含有连续 个
1,它只能是全1,故 。以下设 。先用二项式系数求出基础块中
1数不超过上界的全部方案,再减去环上所有1段长度都小于 的坏方案。若基础块有 个
0、 个1,从一个被标记的0出发,依次记录相邻两个0之间的1数,得到一个长度为 、每项位于 、总和为 的有界组成。用普通背包 DP 求其数量。每个环形标号串有 个可标记的0,而标记位置有 种,因此坏串数为对所有 分别做 DP 即可通过 。
5. 满分算法:统一预处理短
1段满分算法不再为每个 重做 DP。定义
为含 个
0、总长度为 ,且每个1段长度都小于 的线性结构数量。加入一个新0时,其后可接 到 个1,用差分转移即可在 均摊时间完成:再对每一行建立前缀和。枚举环形串开头的
1段长度 ,固定紧随其后的一个0,余下部分便可由 的区间和计数;同时约束末尾1段与开头拼接后仍短于 。这样每个 可在线性时间内求出,全部预处理与统计总复杂度为 。也可以用容斥式独立核验有界组成:
$$[x^w](1+x+\cdots+x^{c-1})^z =\sum_{j=0}^{\lfloor w/c\rfloor}(-1)^j\binom zj\binom{w-cj+z-1}{z-1}.$$最终时间复杂度为 ,空间复杂度为 。
6. 正确性要点
- 可达性等价于“
1总数不超过 且环上存在长度至少 的1段”。 - Burnside 引理把循环等价类计数转化为每个旋转的固定点计数。
- 固定点必为长度 的基础块重复 次,故总
1数约束按重复次数缩放。 - 坏方案恰好是所有环形
1段长度均小于 的字符串;线性 DP 对它们无重无漏计数。 - 从全部固定点中减去坏方案并对旋转取平均,得到且仅得到所求等价类。
做法
预处理组合数、短
1段 DP 及其行前缀和;枚举所有旋转的最大公因数 ,求该旋转的合法固定点数,累加后乘以 的模逆元。复杂度
满分算法时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1449
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者