hdu 5015 233 Matrix 2014 ACM/ICPC Asia Regional Xi'an Online 矩阵快速幂
2014-09-14 18:36
441 查看
题目链接:hdu 5015
给定一个递推的矩阵问第n行,第m列的元素是是什么。
列出由第i列元素求得第i+1列元素的转移矩阵,然后利用矩阵快速幂求解
给定一个递推的矩阵问第n行,第m列的元素是是什么。
列出由第i列元素求得第i+1列元素的转移矩阵,然后利用矩阵快速幂求解
/****************************************************** * File Name: 1009.cpp * Author: kojimai * Creater Time:2014年09月14日 星期日 14时34分23秒 ******************************************************/ /* 给定n,构造n+2*n+2的矩阵,乘一次该矩阵相当于通过当前列得到下一列,然后利用矩阵快速幂求出m次幂得到最终的转移矩阵,然后求解即可 矩阵如下 1 2 3 ... n n+1 n+2 [ 1 1 0 0 ... 0 10 1 2 1 1 0 0 10 1 3 1 1 1 0 10 1 ... n 1 1 1 ... 1 10 1 n+1 0 0 0 ... 0 10 1 n+2 0 0 0 ... 0 0 1 ] a(i,j)=a(i-1,0~j)+a(i,n+1)*10+a(i,n+2)*1 a(i,n+2)=3 */ #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> using namespace std; long long lie[14]; const long long mod= 10000007; struct node { long long num[14][14]; }tmp,now; node mul(node a,node b,int n) { node ret; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { ret.num[i][j]=0; for(int k=1;k<=n;k++) { ret.num[i][j]=(ret.num[i][j]+a.num[i][k]*b.num[k][j]%mod)%mod; } } } return ret; } node qpow(int n,int d) { node ret; memset(ret.num,0,sizeof(ret.num)); for(int i=1;i<=n+2;i++) ret.num[i][i]=1; while(d) { if(d%2==1) ret = mul(ret,tmp,n+2); tmp = mul(tmp,tmp,n+2); d/=2; } return ret; } void out(node x,int n) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) cout<<x.num[i][j]<<' '; cout<<endl; } return; } int main() { int n,m; while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++) cin>>lie[i]; lie[n+1]=23;lie[n+2]=3; int j; memset(tmp.num,0,sizeof(tmp.num)); for(int i=1;i<=n;i++) { for(j=1;j<=i;j++) { tmp.num[i][j]=1; } tmp.num[i][n+1]=10; tmp.num[i][n+2]=1; } tmp.num[n+1][n+1]=10;tmp.num[n+1][n+2]=1; tmp.num[n+2][n+2]=1; node x=qpow(n,m); //out(x,n+2); long long ans=0; for(int i=1;i<=n+2;i++) { ans = (ans + lie[i]*x.num [i]%mod)%mod; } cout<<ans<<endl; } return 0; }
相关文章推荐
- HDU 5015 2014 ACM/ICPC Asia Regional Xi'an Online 233 Matrix
- 2014 ACM/ICPC Asia Regional Xi'an Online 233 Matrix,hdu 5015
- Hdu 5015 233 Matrix[矩阵](2014 ACM/ICPC Asia Regional Xi'an Online )
- hdu 5015 233 Matrix 矩阵快速幂 2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5014 Number Sequence 2014 ACM/ICPC Asia Regional Xi'an Online 数论
- [HDU 5107][2014 ACM/ICPC Asia Regional Xi'an Online]Ellipsoid(爬山)
- hdu 1009 233 Matrix 矩阵构造 --2014 ACM/ICPC Asia Regional Xi'an Online
- HDU 5015 233 Matrix / 2014 ACM/ICPC Asia Regional Xi'an Online
- HDU 5014 Number Sequence 贪心 2014 ACM/ICPC Asia Regional Xi'an Online
- HDU 5014 Number Sequence(2014 ACM/ICPC Asia Regional Xi'an Online) 题解
- HDU 5009 DP (2014 ACM/ICPC Asia Regional Xi'an Online)题解
- HDU 5009 Paint Pearls _(:зゝ∠)_2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5009 Paint Pearls 2014 ACM/ICPC Asia Regional Xi'an Online
- 2014 ACM/ICPC Asia Regional Xi'an Online(hdu 5007 - hdu 5017)
- HDU5014(异或) HDU 5012(BFS)(2014 ACM/ICPC Asia Regional Xi'an Online)题解
- HDU5015 233 Matrix (2014 ACM/ICPC Asia Regional Xi'an Online)
- hdu 5012 Dice 2014 ACM/ICPC Asia Regional Xi'an Online bfs
- 2014 ACM/ICPC Asia Regional Xi'an Online Ellipsoid 学习模拟退火随机算法
- hdu 5011 Game Nim博弈 2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5007 Post Robot 水题 2014 ACM/ICPC Asia Regional Xi'an Online