• CF717A Festival Organization


    更好的阅读体验

    题意

    一个合法的串定义为:长度在 \([l, r]\) 之间,且只含 \(0,1\),并且不存在连续 \(2\) 个或更多的 \(0\).
    现在要选出 \(k\) 个长度相同的不同的合法的串,问有几种选法,答案模 \(10^9+7\).

    \(1\le l\le r\le10^{18}, 1\le k\le200\).

    题解

    \(F_{i,j}\) 表示长度为 \(i\), 以 \(j\) 结尾的合法串个数.
    有 $$\left{
    \begin{array}{lr}
    F_{i,0}=F_{i-1,1} & \
    F_{i,1}=F_{i-1,0}+F_{i-1,1} &
    \end{array}
    \right.$$
    即 $$\left{
    \begin{array}{lr}
    F_{i,0}=\text{Fib}{i} & \
    F
    {i,1}=\text{Fib}{i+1} &
    \end{array}
    \right.$$
    所以答案 $$\text{Ans}=\sum\limits
    {l+2\le i\le r+2}\begin{pmatrix}\text{Fib}_i\k\end{pmatrix}$$

    \[\begin{align*} \text{Ans} =&\sum_{l+2\leq i\leq r+2} \begin{pmatrix}{\text{Fib}_i}\\k\end{pmatrix}\\ =&\frac{1}{k!}\sum_{l+2\le i\le r+2} {\text{Fib}_i}^{\underline{k}}\\ =&\frac{1}{k!}\sum_{l+2\le i\le r+2}\sum_{1\le j\le k}(-1)^{k-j}\begin{bmatrix}k\\ j \end{bmatrix}{\text{Fib}_i}^j\\ =&\frac{1}{k!}\sum_{1\le i\le k}(-1)^{k-i}\begin{bmatrix}k\\ i \end{bmatrix}\sum_{l+2\le j\le r+2}{\text{Fib}_j}^i \end{align*} \]

    考虑带入斐波那契数的通项,令 \(A=\frac{1+\sqrt{5}}{2}, B=\frac{1-\sqrt{5}}{2}\)

    \[\begin{align*} \text{Ans} =&\frac{1}{k!}\sum_{1\le i\le k}(-1)^{k-i}\begin{bmatrix}k\\ i \end{bmatrix}\sum_{l+2\le j\le r+2}[{\frac{1}{\sqrt{5}}(A^j-B^j)}]^i\\ =&\frac{1}{k!}\sum_{1\le i\le k}(-1)^{k-i}\begin{bmatrix}k\\ i \end{bmatrix}(\frac{1}{\sqrt{5}})^i\sum_{l+2\le j\le r+2}\sum_{0\le p\le i}\begin{pmatrix}i\\p\end{pmatrix}(-1)^p(A^{i-p}B^p)^j\\ =&\frac{1}{k!}\sum_{1\le i\le k}(-1)^{k-i}\begin{bmatrix}k\\ i \end{bmatrix}(\frac{1}{\sqrt{5}})^i\sum_{0\le j\le i}\begin{pmatrix}i\\j\end{pmatrix}(-1)^j\sum_{l+2\le p\le r+2}(A^{i-j}B^j)^p \end{align*} \]

    等比数列求和快速计算式子后面部分
    \(\Theta(k^2\times(\log l+\log r))\)

    细节

    本题涉及对 \(\sqrt{5}\) 的计算,然而在模 \(10^9+7\) 意义下 \(5\) 没有二次剩余,扩域维护即可

    代码 codeforces submission 137205589

  • 相关阅读:
    js中拼接字符串
    js中的fliter(),map(),forEach()方法
    美化下拉框select箭头部分(不彻底)
    offsetWidth、clientWidth、scrollWidth、scrollTop、scrollLeft等属性图示
    js事件代理(事件委托)最简单的理解
    ubuntu14.04 caffe+cuda-7.0配置
    ubuntu 中安装和删除软件总结
    C++中的容器可以同时保存各种数据类型
    string的用法
    linux查看GPU的配置和使用信息
  • 原文地址:https://www.cnblogs.com/gzezfisher/p/cf717a.html
Copyright © 2020-2023  润新知