感觉像是HDU Keyboard的加强版,先推出3张牌时的所有组合,然后递推出n张牌

看到n=1e18时吓尿了

最后24那里还是推错了..

(5行1列 dp[1][n],dp[2][n],dp[3][n],dp[4][n],dp[5][n]) = A^(n-3) * (5行1列 4,12,12,12,24)

其中,A=

1,0,0,1,0

3,0,0,3,0

0,1,1,0,1

0,1,1,0,1

0,2,2,0,1

#include<bits/stdc++.h>
#define rep(i,j,k) for(register int i=j;i<=k;i++)
using namespace std;
typedef long long ll;
const int maxn = 100;
const ll MOD = 1e9+9;
inline ll mod(ll a){return a%MOD;}
int b[6][6]={
{0,0,0,0,0,0},
{0,1,0,0,1,0},
{0,3,0,0,3,0},
{0,0,1,1,0,1},
{0,0,1,1,0,1},
{0,0,2,2,0,1},
};
ll c[6]={0,4,12,12,12,24};
struct Mat{
ll m[7][7],r,c;
void node(int rr,int cc,bool unit=0){
r=rr;c=cc;
memset(m,0,sizeof m);
if(unit) rep(i,1,rr) m[i][i]=1;
}
};
Mat operator * (Mat a,Mat b){
Mat ans;ans.node(a.r,b.c);
rep(i,1,a.r){
rep(j,1,b.c){
int t=max(a.r,b.c);
rep(k,1,t){
ans.m[i][j]+=mod(a.m[i][k]*b.m[k][j]);
ans.m[i][j]=mod(ans.m[i][j]);
}
}
}
return ans;
}
Mat qmod(Mat a,ll n){
Mat ans;ans.node(5,5,1);
while(n){
if(n&1) ans=ans*a;
n>>=1;
a=a*a;
}
return ans;
}
ll qmod(ll a,ll n){
ll ans=1;
while(n){
if(n&1) ans=mod(mod(ans)*mod(a));
n>>=1;
a=mod(mod(a)*mod(a));
}
return mod(ans);
}
int main(){
ll n;
Mat base,base2; base.node(5,5); base2.node(5,1);
rep(i,1,5) rep(j,1,5) base.m[i][j]=b[i][j];
rep(i,1,5) base2.m[i][1]=c[i];
while(scanf("%lld",&n)!=EOF){
Mat tmp=qmod(base,n-3);
Mat res=tmp*base2;
ll ans=0;
rep(i,1,5) {ans+=mod(res.m[i][1]);ans=mod(ans);}
ans=mod(qmod(4,n)-ans);
printf("%lld\n",ans<0?ans+MOD:ans);
}
return 0;
}

UESTC - 1610 递推方程+矩阵快速幂的更多相关文章

  1. [HDOJ2604]Queuing(递推,矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 递推式是百度的,主要是练习一下如何使用矩阵快速幂优化. 递推式:f(n)=f(n-1)+f(n- ...

  2. hihoCoder 1143 : 骨牌覆盖问题·一(递推,矩阵快速幂)

    [题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题: 我们有一个2xN的长条形 ...

  3. HDU - 2604 Queuing(递推式+矩阵快速幂)

    Queuing Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  4. HDU5950 Recursive sequence 非线性递推式 矩阵快速幂

    题目传送门 题目描述:给出一个数列的第一项和第二项,计算第n项. 递推式是 f(n)=f(n-1)+2*f(n-2)+n^4. 由于n很大,所以肯定是矩阵快速幂的题目,但是矩阵快速幂只能解决线性的问题 ...

  5. hdu 5950 Recursive sequence 递推式 矩阵快速幂

    题目链接 题意 给定\(c_0,c_1,求c_n(c_0,c_1,n\lt 2^{31})\),递推公式为 \[c_i=c_{i-1}+2c_{i-2}+i^4\] 思路 参考 将递推式改写\[\be ...

  6. [题解][SHOI2013]超级跳马 动态规划/递推式/矩阵快速幂优化

    这道题... 让我见识了纪中的强大 这道题是来纪中第二天(7.2)做的,这么晚写题解是因为 我去学矩阵乘法啦啦啦啦啦对矩阵乘法一窍不通的童鞋戳链接啦 层层递推会TLE,正解矩阵快速幂 首先题意就是给你 ...

  7. HDU-6185-Covering(推递推式+矩阵快速幂)

    Covering Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  8. hdu 6185 递推+【矩阵快速幂】

    <题目链接> <转载于 >>> > 题目大意: 让你用1*2规格的地毯去铺4*n规格的地面,告诉你n,问有多少种不同的方案使得地面恰好被铺满且地毯不重叠.答案 ...

  9. 【图灵杯 F】一道简单的递推题(矩阵快速幂,乘法模板)

    Description 存在如下递推式: F(n+1)=A1*F(n)+A2*F(n-1)+-+An*F(1) F(n+2)=A1*F(n+1)+A2*F(n)+-+An*F(2) - 求第K项的值对 ...

随机推荐

  1. 501. Find Mode in Binary Search Tree查找BST中的众数

    [抄题]: Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently oc ...

  2. SQL Server 本地时间和UTC时间的相互转换

    SET @UTCDate = DATEADD(hour, DATEDIFF(hour,GETDATE(),GETUTCDATE()), @LocalDate) SET @LocalDate2 = DA ...

  3. python核心编程第4章课后题答案(第二版75页)

    4-1Python objects All Python objects have three attributes:type,ID,and value. All are readonly with ...

  4. Linux下为Eclipse安装hadoop插件

    前提条件:在Linux系统中已经安装好了jdk和hadoop 本文的安装环境:1.arch Linux 2. hadoop1.0.1本地伪分布模式安装  3. Eclipse 4.5 1. 下载Ecl ...

  5. delphi 金额大小写转换函数

    {*------------------------------------------------ 金额大小写转换函数 @author 王云盼 @version V1506.01 在delphi7测 ...

  6. javaScript入门之常用事件

    JS中的常用事件 onfocus/onblur:聚焦离焦事件,用于表单校验的时候比较合适. onclick/ondblclick:鼠标单击和双击事件 onkeydown/onkeypress:搜索引擎 ...

  7. TSQL--时间类型和毫秒数转换

    项目中使用BIGINT来存放时间,以下代码用来转换时间类型和BIGINT类型 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========= ...

  8. C#@的用法

    string path = @"C:\Windows\"; // 如果不加 @,编译会提示无法识别的转义序列 // 如果不加 @,可以写成如下 string path2 = &qu ...

  9. c#winform pictureBox使用url加载图片

    string url = "http://b.hiphotos.baidu.com/image/pic/item/03087bf40ad162d93b3a196f1fdfa9ec8b13cd ...

  10. angular 守卫路由

    import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; im ...