Problem F: Frightful Formula
题目:
https://codeforces.com/gym/101480
给一个 n ∗ n n*n n∗n的矩阵,告诉第一行和第一列的数,并且有递推式
F ( i , j ) = a F ( i , j − 1 ) + b F ( i − 1 , j ) + c 2 ≤ i , j ≤ n F(i,j)=aF(i,j-1)+bF(i-1,j)+c\quad 2\le i,j\le n F(i,j)=aF(i,j−1)+bF(i−1,j)+c2≤i,j≤n
求 F ( n , n ) m o d 1 0 6 + 3 F(n,n)\;mod\;10^6+3 F(n,n)mod106+3, 2 ≤ n ≤ 200000 2\le n\le 200000 2≤n≤200000。
思路:
- 我们首先考虑求出每个初始值的贡献。
F ( 1 , i ) F(1,i) F(1,i)对 F ( n , n ) F(n,n) F(n,n)的贡献是 ( 2 n − 2 − i n − 2 ) a n − i b n − 1 F ( 1 , i ) {2n-2-i\choose n-2}a^{n-i}b^{n-1}F(1,i) (n−22n−2−i)an−ibn−1F(1,i)。
可以这样理解, F ( 1 , i ) F(1,i) F(1,i)会对下面和右面有贡献,就相当于 F ( 1 , i ) F(1,i) F(1,i)每次可以向下或向右走,向右走会乘 a a a,向下走乘 b b b,所以 a a a的幂就是横向距离,同理 b b b。至于系数,就是从初始点往下往右走到 ( x , y ) (x,y) (x,y)的方案数。初始位置为 ( 2 , i ) (2,i) (2,i),因为刚开始只能往下走。所以就是 ( 2 n − 2 − i n − 2 ) {2n-2-i\choose n-2} (n−22n−2−i)。同理 F ( i , 1 ) F(i,1) F(i,1)的贡献为 ( 2 n − 2 − i n − 2 ) a n − 1 b n − i F ( i , 1 ) {2n-2-i\choose n-2}a^{n-1}b^{n-i}F(i,1) (n−22n−2−i)an−1bn−iF(i,1).。 - 对于 c c c的处理可以参考高中的求解递推数列,假设有
a n = k a n − 1 + m a_n=ka_{n-1}+m an=kan−1+m
可以构造变成等比数列
( a n + d ) = k ( a n − 1 + d ) a n = k a n − 1 + ( k − 1 ) d \begin{aligned} (a_n+d)&=k(a_{n-1}+d)\\ a_n&=ka_{n-1}+(k-1)d\\ \end{aligned} (an+d)an=k(an−1+d)=kan−1+(k−1)d
则 d = m k − 1 d=\frac{m}{k-1} d=k−1m。
所以类似的
F ( i , j ) = a F ( i , j − 1 ) + b F ( i − 1 , j ) + c ( F ( i , j ) + d ) = a ( F ( i , j − 1 ) + d ) + b ( F ( i − 1 , j ) + d ) F ( i , j ) = a F ( i , j − 1 ) + b F ( i − 1 , j ) + d ( a + b − 1 ) \begin{aligned} F(i,j)&=aF(i,j-1)+bF(i-1,j)+c\\ \big(F(i,j)+d\big)&=a\big(F(i,j-1)+d\big)+b\big(F(i-1,j)+d\big)\\ F(i,j)&=aF(i,j-1)+bF(i-1,j)+d(a+b-1)\\ \end{aligned} F(i,j)(F(i,j)+d)F(i,j)=aF(i,j−1)+bF(i−1,j)+c=a(F(i,j−1)+d)+b(F(i−1,j)+d)=aF(i,j−1)+bF(i−1,j)+d(a+b−1)
则 d = c a + b − 1 d=\frac{c}{a+b-1} d=a+b−1c,所以我们令 f ( i , j ) = F ( i , j ) + d f(i,j)=F(i,j)+d f(i,j)=F(i,j)+d
f ( i , j ) = a f ( i , j − 1 ) + b f ( i − 1 , j ) f(i,j)=af(i,j-1)+bf(i-1,j) f(i,j)=af(i,j−1)+bf(i−1,j)
再用上面的贡献算,则
f ( n , n ) = ∑ i = 2 n ( 2 n − 2 − i n − 2 ) a n − i b n − 1 f ( 1 , i ) + ∑ i = 2 n ( 2 n − 2 − i n − 2 ) a n − 1 b n − i f ( i , 1 ) F ( n , n ) = f ( n , n ) − d \begin{aligned} f(n,n)&=\sum_{i=2}^{n}{2n-2-i\choose n-2}a^{n-i}b^{n-1}f(1,i)+\sum_{i=2}^{n}{2n-2-i\choose n-2}a^{n-1}b^{n-i}f(i,1)\\ F(n,n)&=f(n,n)-d \end{aligned} f(n,n)F(n,n)=i=2∑n(n−22n−2−i)an−ibn−1f(1,i)+i=2∑n(n−22n−2−i)an−1bn−if(i,1)=f(n,n)−d
Problem F: Frightful Formula相关推荐
- 【NTT】Gym - 101480 - F - Frightful Formula
题目链接https://codeforces.com/gym/101480/attachments 题意 给出一个矩阵,第一行是数组 t t t,第一列是数组 l l l,其余的值为 F [ i ] ...
- 2015-2016 ACM-ICPC, Central Europe Regional Contest (CERC 15) F.Frightful Formula(大数NTT)
题目链接:http://codeforces.com/gym/101480/attachments mark一下O(1)快速乘,啥原理啊?还有这个长度计算,貌似也得好好学学啊? 代码: #includ ...
- Frightful Formula Gym - 101480F (待定系数法)
Problem F: Frightful Formula \[ Time Limit: 10 s \quad Memory Limit: 512 MiB \] 题意 题意就是存在一个\(n*n\)的矩 ...
- bzoj 4451 : [Cerc2015]Frightful Formula FFT
4451: [Cerc2015]Frightful Formula Time Limit: 10 Sec Memory Limit: 64 MB Submit: 177 Solved: 57 [S ...
- 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...
- Problem F: 结构体--学生信息排序
Problem F: 结构体–学生信息排序 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 378 Solved: 192 [Submit][Status ...
- Problem F: Matrix Problem (III) : Array Practice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 8787
Problem F: Matrix Problem (III) : Array Practice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 8787 ...
- Problem F: 凹凸四边形
Problem F: 凹凸四边形 Description 四边形分为凸四边形和凹四边形,如下图,图1为凸四边形,图2为凹四边形. 按照连边顺序给出四边形的四个顶点坐标,判断该四边形是凹四边形还是凸四边 ...
- Problem F: 计票
Problem F: 计票 Description 美国总统大选终于拉开了正式帷幕,大家都预计希拉里会获胜.各州的统计结果陆续出来了,你能帮忙统计下总得票吗? Input 多组测试数据,每组先输入一个 ...
最新文章
- 在文本每一行的行首和行尾都插入特定的相同字符或文本
- 为什么python中不需要变量名和变量类型声明?
- wget python3_python wget
- 工具类集和_gblfy版本
- matlab chan算法定位,MATLAB实现基于Chan氏算法的三维TDOA定位
- 前端框架--React props与React state
- c语言 指正判断字符串大小
- Java 并发编程之同步工具类闭锁 CountDownLatch
- c++如何获取文件时间_3分钟短文 | PHP 如何优雅地获取文件扩展名?别再explode了
- networkx 点的属性_在NetworkX中分配节点属性时发生类型错误
- android插件依赖和aar依赖,Android Studio添加aar依赖的两种方式
- CefSharp 实现拖拉滑动验证Demo
- oracle19c报价_Oracle 19c下载
- 头条小程序登录40014 bad params
- [CSP2020]儒略日
- pigx框架费用_【开源项目】一篇文章搞掂:Pig微服务框架
- 如何查看 安卓证书 的签名
- android之RecyclerView.Adapter介绍
- pyppeteer文件下载
- 数据库中的参照完整性(Foreign Key)