hdu 5015 233 Matrix 2014 ACM/ICPC Asia Regional Xi'an Online 矩阵快速幂
来源:互联网 发布:数据字典是用来定义 编辑:程序博客网 时间:2024/05/01 07:58
题目链接:hdu 5015
给定一个递推的矩阵问第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[n][i]%mod)%mod;}cout<<ans<<endl;}return 0;}
0 0
- 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 5015 233 Matrix[矩阵](2014 ACM/ICPC Asia Regional Xi'an Online )
- hdu 1009 233 Matrix 矩阵构造 --2014 ACM/ICPC Asia Regional Xi'an Online
- HDU 5015 233 Matrix / 2014 ACM/ICPC Asia Regional Xi'an Online
- 2014 ACM/ICPC Asia Regional Xi'an Online 233 Matrix,hdu 5015
- HDU 5015 2014 ACM/ICPC Asia Regional Xi'an Online 233 Matrix
- HDU5015 233 Matrix (2014 ACM/ICPC Asia Regional Xi'an Online)
- 2014 ACM/ICPC Asia Regional Xi'an Online 小记
- 2014 ACM/ICPC Asia Regional Xi'an Online
- 2014 ACM/ICPC Asia Regional Xi'an Online(hdu 5007 - hdu 5017)
- hdu 5012 Dice 2014 ACM/ICPC Asia Regional Xi'an Online bfs
- 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 5014 Number Sequence 找规律 | 贪心 2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5008(2014 ACM/ICPC Asia Regional Xi'an Online ) Boring String Problem(后缀数组&二分)
- hdu 5011 Game Nim博弈 2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5007 Post Robot 水题 2014 ACM/ICPC Asia Regional Xi'an Online
- 五大常用经典算法
- Apache Thrift - 可伸缩的跨语言服务开发框架
- ACM整理(七)——1006:zoj
- Java实现http协议的解析
- 函数指针
- hdu 5015 233 Matrix 2014 ACM/ICPC Asia Regional Xi'an Online 矩阵快速幂
- 猫推荐算法大赛Top 9团队
- Openstack icehouse ubuntu 部署 - 虚拟机网络配置(GRE配置版本)
- HDU 5009 Paint Pearls(西安网络赛C题)
- Java深入 - Java Socket和NIO
- Linux服务器编程之:truncate()函数+案例说明
- Java集合框架的知识总结(1)
- 【转】数学专业的数学与计算机专业的数学的比较
- Distributed transactions with multiple databases, Spring Boot, Spring Data JPA and Atomikos