[bzoj4161]Shlw loves matrixI
来源:互联网 发布:u盘数据丢失恢复 编辑:程序博客网 时间:2024/05/21 21:39
题目大意
常系数齐次递推
生成函数
构造特征多项式
然后用快速幂做多项式取模
多项式乘法暴力即可
#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;typedef long long ll;const int maxn=4000+10,mo=1000000007;int a[maxn],b[maxn],c[maxn],d[maxn],e[maxn],f[maxn],o[maxn],ans[maxn],one[maxn],sta[80];int i,j,k,l,t,n,m,top,num;void FFT(int *a,int *b,int *c){ int i,j; fo(i,0,k-1) e[i]=a[i],f[i]=b[i]; fo(i,0,2*k-2) o[i]=0; fo(i,0,k-1) fo(j,0,k-1) o[i+j]=(o[i+j]+(ll)a[i]*b[j])%mo; fd(i,2*k-2,k){ fo(j,1,k) o[i-j]=(o[i-j]-(ll)o[i]*d[k-j])%mo; o[i]=0; } fo(i,0,k-1) c[i]=o[i];}int main(){ scanf("%d%d",&n,&k); fo(i,1,k) scanf("%d",&c[i]); fo(i,0,k-1) scanf("%d",&a[i]); d[k]=1; fd(i,k-1,0) d[i]=-c[k-i]; b[1]=1; ans[0]=1; while (n){ sta[++top]=n%2; n/=2; } while (top){ FFT(ans,ans,ans); if (sta[top]) FFT(ans,b,ans); top--; } fo(i,0,k-1) num=(num+(ll)ans[i]*a[i])%mo; (num+=mo)%=mo; printf("%d\n",num);}
0 0
- bzoj4161 Shlw loves matrixI
- [bzoj4161]Shlw loves matrixI
- BZOJ 4161 Shlw loves matrixI
- BZOJ 4162 shlw loves matrix II 拉格朗日插值+Cayley-Hamilton定理
- leetcode做题总结,题目Search a 2D MatrixI/II 2012/04/06
- Jesus loves you
- cf445A DZY Loves Chessboard
- cf445B DZY Loves Chemistry
- cf444A DZY Loves Physics
- Codeforces445A_DZY Loves Chessboard(预处理)
- Codeforces444A_DZY Loves Physics
- cf446A DZY Loves Sequences
- C. DZY Loves Sequences
- D. DZY Loves Modification
- DZY Loves Fibonacci Numbers
- 【CF】DZY Loves Chessboard
- A. DZY Loves Hash
- B. DZY Loves Strings
- 洛谷 P2057 善意的投票
- Android——Glide的使用详解
- Java 正则表达式匹配img标题的src值
- webpack入门(三)
- JAVA--长整数与16进制字符串互相转换
- [bzoj4161]Shlw loves matrixI
- 致自己
- Android AndroidManifest.xml相关flag详细说明
- myeclipse+pydev4.0.1+scrapy 构建爬虫项目的流程
- 数据结构--链表
- 506. Relative Ranks的C++解法
- astgo-官方提供的使用技巧大全
- Codeforces Round #247 (Div. 2)
- ZOJ 3949 Edge to the Root(树形DP)