跳转至

DNA 双链长度区间计数

Codex(GPT-6)解法贡献: 对反向互补的固定表示计数,推导长度前缀和,并实现无除法的等比块合并。计数使用经典的对合轨道划分,不将该方法归为模型原创。

固定长度

令 \(q=2K\) .反向互补执行两次回到原串,因此每个等价类有一个或两个表示。奇数长度的中心字母不可能等于自身互补,没有固定表示。偶数长度 \(t=2h\) 时,前一半任选,后一半被唯一确定,共 \(q^h\) 个固定表示。

固定表示单独成类,其余两两成类,所以

\[ F(t,K)=\frac{q^t+[2\mid t]q^{t/2}}{2} \]

这里方括号表示条件成立为一,否则为零。模数 \(P=1000000007\) 为奇素数,除二可乘 \(500000004\) .

长度前缀

定义 \(G(h)=\sum_{i=1}^{h}q^i\) ,\(G(0)=0\) .从固定长度公式得

\[ H(n)=\sum_{t=1}^{n}F(t,K)=\frac{G(n)+G(\lfloor n/2\rfloor)}{2} \]

设 \(h=\lfloor n/2\rfloor\) 、\(p=q^h\) 、\(s=G(h)\) .有 \(G(2h)=s(1+p)\) ;奇数时再加 \(q^{2h+1}=p^2q\) .因此

\[ H(n)=\frac{s(p+2)+[2\nmid n]p^2q}{2} \]

区间答案为 \(H(R)-H(L-1)\) ,对模数正规化即可。\(H(0)=0\) 自然成立。

无除法的等比块

一个长度块保存 \((p,s)=(q^h,G(h))\) .在长度为 \(a\) 的块后接长度为 \(b\) 的块,得到

\[ p_{a+b}=p_ap_b,\qquad s_{a+b}=s_a+p_as_b \]

从空块 \((1,0)\) 和单位块 \((q,q)\) 出发,按长度的二进制位合并与倍增,求出任意 \((q^h,G(h))\) .所有等式均在模 \(P\) 下成立,即使 \(q\equiv1\pmod P\) 也无需特殊处理。

固定表示计数证明了单长度公式;等比块不变量证明每次合并正确,前缀相减故得到准确的区间计数。单次询问时间 \(O(\log(R+1))\) 、辅助空间 \(O(1)\) ;流式处理全部询问,总时间 \(O(\sum\log(R+1))\) .模乘中间量用 64 位,两个模内数的乘积小于约 \(10^{18}\) .

闭式等比求和是另一种同阶方案,见程序。它减少块状态,但每个询问需要一个模逆元或处理特殊公比;两份程序均通过完整数据。

实现与验证

标准程序、生成器、测试配方。

参考环境中标准程序最慢中位数 0.076774 秒,峰值 5.32 MiB,校准时限 0.5 秒。每例独立运行五次。

评测环境与逐次时间和哈希。数值只适用于所记录环境,迁移评测机需重新校准。