感觉像是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;
}

转载于:https://www.cnblogs.com/caturra/p/8310605.html

UESTC - 1610 递推方程+矩阵快速幂相关推荐

  1. 牛客14607 递推(矩阵快速幂构造)

    链接:https://ac.nowcoder.com/acm/problem/14607 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言2621 ...

  2. 2016 pku campus/OpenJ_POJ - C16H(推公式+矩阵快速幂)

    传送门 题面: 描述 Wenwen has a magical ball. When put on an infinite plane, it will keep duplicating itself ...

  3. HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)

    题目链接:点击查看 题意:给出a,b,m,n,求 解析:题意一目了然,此题的关键是推出解决问题的公式. 首先,题目要求括号内n次方后向上取整再模m,而这里给到的a与b的关系接下来也会用到:<b& ...

  4. 10.02 T3 打表找递推式+十进制快速幂 九校联考凉心模拟DAY1T1

    题目背景 金企鹅同学非常擅长用1*2的多米诺骨牌覆盖棋盘的题.有一天,正 在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺(domino)",那 么三个格子的的积木一定叫&q ...

  5. hdu 6395Sequence【矩阵快速幂】【分块】

    Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total ...

  6. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

  7. 蓝桥杯 算法提高 递推求值(矩阵快速幂)详解

    传送门 问题描述 已知递推公式: F(n, 1)=F(n-1, 2) + 2F(n-3, 1) + 5, F(n, 2)=F(n-1, 1) + 3F(n-3, 1) + 2F(n-3, 2) + 3 ...

  8. Happy Necklace dp 递推 矩阵快速幂

    当满足素数2和素数3的条件后,下一个素数区间5乃至之后的都会被满足. 考虑能否从f[n - 1]转换到f[n],考虑第i - 1位,如果后面加红色一定满足条件,所以f[n]先是加上f[n - 1] 如 ...

  9. NYOJ 301 递推求值(矩阵快速幂)

    递推求值 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给你一个递推公式: f(x)=a*f(x-2)+b*f(x-1)+c 并给你f(1),f(2)的值,请求出f(n ...

最新文章

  1. C# 在用户控件中添加自定义事件
  2. Facebook性能大提升的秘密:HipHop
  3. Mysql 主从延时监控(pt-heartbeat)详解
  4. java servlet 获取路径问题_Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析...
  5. [Swift]LeetCode75. 颜色分类 | Sort Colors
  6. Harbor容器仓库的镜像上传
  7. 关于海量数据查找排序问题
  8. Java中方法参数的传递
  9. Maven的安装和使用
  10. 04_过滤器Filter_04_Filter生命周期
  11. 前后端开源的一款简单的微信个人博客小程序
  12. 20180925-6 四则运算试题生成
  13. NAS安装迅雷远程下载
  14. 《机器学习》课后习题3.5 编辑实现线性判别分析,并给出西瓜数据集 3.0α 上的结果.
  15. 一种基于HBase韵海量图片存储技术
  16. 开源的IM框架--担心
  17. 《童梦奇缘-梦幻般的羁绊》第六章-残月
  18. 何海涛算法面试题感悟之四:二元树…
  19. 素质拓展·【团建宝】千岛湖皮划艇+露营+环岛骑行2日团建-【携程旅游】
  20. 【GO | 基于linux和Windows平台的下载安装及配置】

热门文章

  1. 某互联网公司校园招聘的小组面试题
  2. 在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图
  3. 如何让Spring MVC显示自定义的404 Not Found页面
  4. vscode vue解决跨域_Vue + WebPack + Typescript初学者VSCode项目 (按需加载、跨域调试、await/async)...
  5. 【不屈】生如蝼蚁,当立鸿鹄之志
  6. python识别人脸多种属性_OpenCV-Python(3)训练一个人脸识别器
  7. ppp协议pap验证过程状态转移图_电脑网络知识:TCP协议的高级特性,你所不知道的TCP...
  8. dwcs6连接不上access数据库_dw连接access数据库步骤
  9. python学习-元组tuple(定义、删除、长度、复制、查找、遍历、operator,和列表的区别)
  10. matlab调用opencv库,matlab调用opencv库