才没有在做cerc2015呢
  看到好像不少人这题写fft卡得死死的啊,不如 O(n) O(n) 递推(雾)
  首先可以观察出 (i,1) (i,1)这个格子为 x x时对(n,n)(n,n) a,b a,b单独的贡献为 x(n−2+n−in−i)an−1bn−i x\binom{n-2+n-i}{n-i}a^{n-1}b^{n-i}, (1,i) (1,i)格子同理。这两部分可以直接xjb算出来。
  考虑 (i,j) (i,j)格子的 c c对(n,n)(n,n)的贡献,为

∑i=2n∑j=2n((n−i)+(n−j)n−i)an−ibn−jc

\sum_{i=2}^n \sum_{j=2}^{n} \binom{(n-i)+(n-j)}{n-i} a^{n-i}b^{n-j}c
  后面的 c c先不管,先把这个式子xjb变换一下。

∑i=2nan−i∑j=2n(2n−i−jn−i)bn−j  =∑i=0n−2ai∑j=0n−2(i+ji)bj

\sum_{i=2}^n a^{n-i} \sum_{j=2}^n \binom{2n-i-j}{n-i} b^{n-j}\\=\sum_{i=0}^{n-2}a^i \sum_{j=0}^{n-2} \binom{i+j}{i} b^j
  其实推到这里就可以做了,注意到把组合数拆开了之后是两个指数生成函数的卷积的系数和(差不多这个意思),就可以直接上fft了。
   但是这样太优美了不够暴力
  继续把它推下去吧。
  我们设

fn=∑i=0nai∑j=0n(i+ji)bj

f_n=\sum_{i=0}^{n}a^i \sum_{j=0}^{n} \binom{i+j}{i} b^j
  那么答案就是 fn−2 f_{n-2},现在考虑怎么搞出个递推式。我们可以把前 n−1 n-1项都提出来。
  

fn=fn−1+an∑i=0n−1(n+ii)bi+bn∑i=0n−1(n+ii)ai+(2nn)anbn

f_n=f_{n-1}+a^n\sum_{i=0}^{n-1}\binom{n+i}{i}b^{i}+b^n\sum_{i=0}^{n-1}\binom{n+i}{i}a^i+\binom{2n}{n}a^nb^n
  注意到中间有两个东西是一样的,那么可以继续设

gn(x)=∑i=0n−1(n+ii)xi

g_n(x)=\sum_{i=0}^{n-1}\binom{n+i}{i}x^i
  把组合数拆了,继续推吧= =
  

gn(x)=∑i=0n−1((n−1+ii)+(n−1+ii−1))xi  =gn−1(x)+(2n−2n−1)xn−1+∑i=0n−2(n+ii)xi+1=gn−1(x)+(2n−2n−1)xn−1+xgn(x)−(2n−1n−1)xn

g_n(x)=\sum_{i=0}^{n-1}(\binom{n-1+i}{i} + \binom{n-1+i}{i-1})x^i\\ = g_{n-1}(x)+\binom{2n-2}{n-1}x^{n-1}+\sum_{i=0}^{n-2}\binom{n+i}{i}x^{i+1}\\=g_{n-1}(x)+\binom{2n-2}{n-1}x^{n-1}+xg_n(x)-\binom{2n-1}{n-1}x^n
  移一下项,得到
  

gn(x)=(gn−1(x)+(2n−2n−1)xn−1−(2n−1n−1)xn)/(1−x)

g_n(x)=(g_{n-1}(x)+\binom{2n-2}{n-1}x^{n-1}-\binom{2n-1}{n-1}x^n)/(1-x)
  把 gn(x) g_n(x)代入 fn f_n,有
  

fn=fn−1+angn(b)+bngn(a)+(2nn)anbn

f_n=f_{n-1}+a^ng_n(b)+b^ng_n(a)+\binom{2n}{n}a^nb^n
  好的到这里 gn(x) g_n(x)就可以 O(n) O(n)算了。。。于是 fn f_n也可以 O(n) O(n)算了。
  注意一下 gn(0) g_n(0)和 gn(1) g_n(1)不用递推,直接算就好。
  于是在 O(n) O(n)内就做完啦。
  代码太丑就不贴了。

【bzoj 4451】[Cerc2015]Frightful Formula - 递推相关推荐

  1. bzoj 4451 : [Cerc2015]Frightful Formula FFT

    4451: [Cerc2015]Frightful Formula Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 177  Solved: 57 [S ...

  2. [FFT || 递推] BZOJ 4451 [Cerc2015]Frightful Formula

    f1,i f_{1,i} 的贡献是 f1,i∗an−i∗bn−1∗Cn−i2n−i−2 f_{1,i}*a^{n-i}*b^{n-1}*C_{2n-i-2}^{n-i} fi,1 f_{i,1} 同理 ...

  3. BZOJ 4451: [Cerc2015]Frightful Formula

    Description 给你一个n*n矩阵的第一行和第一列,其余的数通过如下公式推出:  \(f_{i,j}=a\times f_{i,j-1}+b\times f_{i-1,j}+c\) 求\(f_ ...

  4. bzoj 4451: [Cerc2015]Frightful Formula 数学+排列组合

    题意 给你一个n*n矩阵的第一行和第一列,其余的数通过如下公式推出: F[i,j]=a*f[i,j-1]+b*f[i-1,j]+c 求f[n][n]%(10^6+3) 2<=n<=2000 ...

  5. BZOJ4451 [Cerc2015]Frightful Formula 多项式 FFT 递推 组合数学

    原文链接http://www.cnblogs.com/zhouzhendong/p/8820963.html 题目传送门 - BZOJ4451 题意 给你一个$n\times n$矩阵的第一行和第一列 ...

  6. BZOJ 3329: Xorequ(数位dp+递推)

    传送门 解题思路 可以把原式移项得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),说明\(x\)二进制下不能有两个连续的\(1\).那么第一问就是一个简单的数位\(dp\),第二问考 ...

  7. BZOJ 3823 定情信物 递推

    题目大意:定义点为零维元素,线为一维元素,面为二维元素,空间为三维元素,以此类推,求n维立方体中各维元素都有多少 令f[i][j]为i维立方体内j维元素的个数 考虑n维立方体中的i维元素,将n维立方体 ...

  8. BZOJ4451 : [Cerc2015]Frightful Formula

    $(i,1)$对答案的贡献为$l_iC(2n-i-2,n-i)a^{n-1}b^{n-i}$. $(1,i)$对答案的贡献为$t_iC(2n-i-2,n-i)*a^{n-i}b^{n-1}$. $(i ...

  9. CERC2015 Frightful Formula 神奇的模意义下分数

    上网查了下这道题的正解是FFT......然而机智的xushu用待定系数法A了.... f[i,j]+k=a(f[i][j-1]+k)+b(f[i-1,j]+k) 解得 k=c/(a+b-1) 于是令 ...

最新文章

  1. android防治方法被反射,通过去classLoader避免Android P反射限制后还原classLoader的方法...
  2. PHP如何防止XSS攻击
  3. java-Random类
  4. 《Python3网络爬虫开发实战(第二版)》上市了!!!!
  5. 【经验】新人学习写程序的第一道坎
  6. 下一代的 Actor 模型框架 Proto Actor
  7. 大数据技术 学习之旅_为什么聚焦是您数据科学之旅的关键
  8. 联想服务器系统安装bios设置,Windows 8操作系统如何通过Legacy BIOS与UEFI两种模式安装...
  9. android 模仿微信布局,【Android初学者】框架布局:仿微信页面制作
  10. 前端优化,包括css,jss,img,cookie
  11. PDF如何旋转页面 PDF旋转页面的方法
  12. win10蓝牙怎么开_摩托罗拉对讲机蓝牙写频方法
  13. 机器学习笔试面试整理
  14. Chromium浏览器扩展JS对象方法
  15. google gcr.io、k8s.gcr.io 国内镜像
  16. Qt高级教程图形视图部分
  17. Python grabcut 提取图像前景
  18. NPDP产品经理小知识:端到端的流程建设与跨职能团队管理
  19. 关于KOT、KOL、KOC 理解
  20. educoder锁存器和触发器设计之主从D触发器设计+门控D锁存器设计

热门文章

  1. Nessus安装解除ip限制和卸载
  2. mysql cacherowset_Java实现分页数据获取CachedRowSet
  3. Qt调用百度翻译api
  4. 各种计算1000阶乘的技巧
  5. Android app添加后台拉起机制
  6. 3分钟认识Vue3的v-model
  7. vue3的tsx写法(v-show、v-if、v-for、v-bind、v-on),父子组件传值
  8. vscode快捷键插入html基本框架
  9. linux ubuntu 分区,查看Ubuntu分区列表方法
  10. principle导出html5,手把手教你用Principle制作原型