我就是不用矩阵快速幂!

题意:一个 \(\rm 01\) 序列为合法的当且仅当没有两个相邻的 \(1\),若 \(1\) 的个数为 \(x\),\(0\) 的个数为 \(y\),这个 \(\rm 01\) 的价值为 \(x^a \times y^b\)。

请求出所有长度为 \(n\) 的 \(\rm 01\) 序列的价值之和,对 \(m\) 取模。

这道题的阴间之处就在于 \(m\) 不一定是质数。。。

首先我们枚举 \(1\) 的个数,可以得到答案为:

\[\sum_{i=0}^n\binom {n-i+1} ii^b(n-i)^a
\]

如果 \(m\) 是质数的话,这里就可以直接 \(O(n)\) 计算了,可惜并不是。

考虑使用二项式定理展开后者:

\[\sum_{i=0}^{\infty}\binom {n-i+1}ii^b\sum_{j=0 }^a\binom a jn^{a-j}(-i)^j
\]
\[\sum_{j=0}^a\binom a jn^{a-j}(-1)^j\sum_{i=0}^{\infty}\binom {n-i+1} ii^{b+j}
\]

现在的问题就是如何处理 \(\sum_{i=0}^{\infty}\binom {n-i+1}ii^k\)。

使用 \(\binom n m=\binom {n-1} m+\binom {n-1}{m-1}\) 展开组合数:

\[f_{n,k}=\sum_{i=0}^{\infty}\binom {n-i} i i^k
\]
\[f_{n,k}=\sum_{i=0}^{\infty}(\binom {n-i-1} i+\binom {n-i-1}{i-1})i^k
\]
\[f_{n,k}=\sum_{i=0}^{\infty}\binom {n-i-1}i i^k+\sum_{i=1}^{\infty}\binom {n-i-1}{i-1} i^k
\]
\[f_{n,k}=f_{n-1,k}+\sum_{i=0}^{\infty}\binom {n-i-2} i(i+1)^k
\]

把后面用二项式定理展开:

\[\sum_{i=0}^{\infty}\binom {n-i-2} i\sum_{j=0}^k \binom k ji^j
\]
\[\sum_{j=0}^k\binom k j\sum_{i=0}^{\infty}\binom {n-i-2} ii^j
\]

所以:

\[f_{n,k}=f_{n-1,k}+\sum_{j=0}^k\binom k jf_{n-2,j}
\]

如果仔细点儿可以发现这里实际上是在说:

\[f_{n,k}=f_{n-1,k}+f_{n-2,k}+\sum_{j=0}^{k-1}\binom k jf_{n-2,j}
\]

也就是说 $f_{i,j} $ 对 $ f_{n,k}$ 的贡献与斐波那契数列有关,为 \(\binom k jfib_{n-i-2}\)。

接下来就很好办了。

设 \(F_k(x)=\sum_{i=0}^{\infty}f_{i,k}x^i\)

首先很明显,根据定义有 \(F_0(x)=\frac 1 {1-x-x^2}\)。(也就是斐波那契数列)

于是有:

\[F_k(x)=\frac {x^2} {1-x-x^2}\sum_{i=0}^{k-1}\binom k iF_i(x)
\]

我们可以根据这个直接知道 \(F_1(x)=\frac 1 {(1-x-x^2)^2}\)。

那么 \(F_2(x)\) 呢?

\[\frac {\binom 2 1}{(1-x-x^2)^3}+\frac {\binom 2 0}{(1-x-x^2)^2}=\frac {\binom 2 1+\binom 2 0(1-x-x^2)^1}{(1-x-x^2)^3}
\]

合理猜测 \(F_k(x)\) 的分母为 \((1-x-x^2)^{k+1}\)。

于是我们只维护分子,不维护分母。

那么分子所对应的递推式就应该是 \(H_k(x)=\frac {x^2}{1-x-x^2}\sum_{i=0}^{k-1}\binom k iH_i(x)(1-x-x^2)^{k-i}\)。

于是我们使用类似秦九韶求多项式的值的方法可以做到 \(O(k^3)\) 处理出 \(H_0(x) \sim H_k(x)\),然后再使用常系数齐次线性递推算一下就是和比暴力矩快还慢的\(O((a+b)^3+a(a+b)^2\log n)\) 了。

第二种做法:我们可以列一个 DP 方程,然后用 BM 大力猜出递推式,就可以做到 \(O((a+b)^2\log n)\) 了,好耶!(这里根据直觉猜测递推式的长度就是 a+b)

LGP4456题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. UIKit绘图演练

    一般使用UIKit给我们提供的绘图来绘制一些文字,图片这些东西.     UIKit给我们提供画图的方法底层也是分为四步.所以也必须在drawRect方法当中去写.     1.如何画文字?      ...

  2. 微信小程序开发常用功能

    获取用户信息 调用 wx.getUserProfile 方法获取用户基本信息.页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 ...

  3. 浅谈Java之属性赋值的先后顺序

    首先,什么是属性? 属性也叫作成员变量,是类的组成部分之一. 我们都知道Java一个类可以包含有: 属性,或者成员变量 构造器 方法,或者叫函数 代码块,或者叫程序段 内部类 那么结合这些,我们就有了 ...

  4. Azure AD Domain Service(二)为域服务中的机器配置 Azure File Share 磁盘共享

    一,引言 Azure File Share 是支持两种认证方式的! 1)Active Directory 2)Storage account key 记得上次分析的 "Azure File ...

  5. Solution -「CTS 2019」「洛谷 P5404」氪金手游

    \(\mathcal{Description}\)   Link.   有 \(n\) 张卡牌,第 \(i\) 张的权值 \(w_i\in\{1,2,3\}\),且取值为 \(k\) 的概率正比于 \ ...

  6. Solution -「多校联训」数学考试

    \(\mathcal{Description}\)   Link.   给定 \(n\) 个函数,第 \(i\) 个有 \(f_i(x)=a_ix^3+b_ix^2+cx_i+d~(x\in[l_i, ...

  7. shell脚本部署zookeeper-3.4.10 [含注释]

    文章目录 zk_install.sh conf/config conf/zoo_template.cfg package zk_install.sh #!/bin/bash base_path=$(c ...

  8. (待补充)diff 算法解析

    今天,学习React的时候,底层提到了 diff算法,顺藤摸瓜, 也发现了VUE也使用了diff算法. mark一下,后续补充 infoq-VUE-diff算法 react-diff算法

  9. 实际项目中使用CompletionService提升系统性能的一次实践

    随着互联网应用的深入,很多传统行业也都需要接入到互联网.我们公司也是这样,保险核心需要和很多保险中介对接,比如阿里.京东等等.这些公司对于接口服务的性能有些比较高的要求,传统的核心无法满足要求,所以信 ...

  10. 关于NSMutableAttributedString进行富文本 UILabel 的制作

    //1.初始化与其他无异 NSMutableAttributedString *AttributedStr2 = [[NSMutableAttributedString alloc]initWithS ...