[Luogu] P1939 【模板】矩阵加速(数列)
题目描述
a[1]=a[2]=a[3]=1
a[x]=a[x-3]+a[x-1] (x>3)
求a数列的第n项对1000000007(10^9+7)取余的值。
题目解析
顺序:x.x,y.y,x.y
Code
#include<iostream> #include<cstdio> #include<cstring> using namespace std;const int MOD = 1000000007;struct Matrix {long long m[10][10];int sx,sy; } str,pro;long long n;void init() {str.m[1][1] = str.m[1][2] = str.m[1][3] = 1;str.sx = 1;str.sy = 3;pro.m[1][1] = pro.m[1][2] = pro.m[2][2] = pro.m[2][3] = pro.m[3][1] = 0;pro.m[1][3] = pro.m[2][1] = pro.m[3][2] = pro.m[3][3] = 1;pro.sx = pro.sy = 3;return; }inline Matrix mul(Matrix a,Matrix b) {Matrix res;memset(res.m,0,sizeof(res.m));for(int i = 1;i <= a.sx;i++) {for(int j = 1;j <= b.sy;j++) {for(int k = 1;k <= b.sx;k++) {res.m[i][j] += a.m[i][k] * b.m[k][j] % MOD;res.m[i][j] %= MOD;}}}res.sx = a.sx, res.sy = b.sy;return res; }inline Matrix quick_pow(Matrix x,long long y) {Matrix res;res.sx = str.sx;res.sy = str.sy;for(int i = 1;i <= 5;i++) {for(int j = 1;j <= 5;j++) {res.m[i][j] = (i==j);}}while(y) {if(y & 1) res = mul(res,x);x = mul(x,x);y >>= 1;}return res; }int main() {int T;scanf("%d",&T);while(T--) {scanf("%lld",&n);init();if(n <= 3) {puts("1");continue;}Matrix ans = mul(str,quick_pow(pro,n));printf("%lld\n",ans.m[1][3]);}return 0; }
转载于:https://www.cnblogs.com/floatiy/p/9772496.html
[Luogu] P1939 【模板】矩阵加速(数列)相关推荐
- 矩阵小专题(矩阵快速幂+矩阵加速)
1.什么是矩阵? 矩阵(数学术语)_百度百科 2.矩阵快速幂 首先要知道,只有n*n的矩阵能乘以自身(否则不符合矩阵相乘的条件) 然后要明白普通的快速幂的原理(本质是把幂次二分,代码如下) inlin ...
- 矩阵快速幂(矩阵加速)
//南昌理工ACM集训队 放心食用 矩阵加速 快速幂(前置技能) 矩阵快速幂 可乐 附个模板 最后小结 本人小白如有不对欢迎指正ლ(╹◡╹ლ) 矩阵加速 快速幂(前置技能) 对于普通的求a的b次方,一 ...
- 【AC自动机】【矩阵加速】BZOJ4861魔法咒语
分析: 巨恶心的一题双代码题. 对于前半部分,把禁止出现的字符串建一颗AC自动机. 然后枚举每个位置用了某个模板串后转移到哪里. 然后直接DP即可. 但是对于后半部分数据,则必须写一个矩阵加速... ...
- [CQOI2018] 交错序列(矩阵加速优化dp)
problem luogu-P4456 solution 预处理阶乘和阶乘的逆元,枚举 111 出现次数 iii,∑(n−i+1i)(n−i)aib\sum\binom{n-i+1}{i}(n-i)^ ...
- 线性代数四之动态DP(广义矩阵加速)——Can you answer these queries III,保卫王国
动态DP--广义矩阵加速 SP1716 GSS3 - Can you answer these queries III description solution code [NOIP2018 提高组] ...
- 线性代数三之状压DP的矩阵加速——Quad Tiling,Bus公交线路
状压与矩阵加速的藕断丝连 Quad Tiling description solution code [Hnoi2010]Bus 公交线路 description solution code Quad ...
- 线性代数二之矩阵加速DP——数学作业,Arc of Dream
矩阵加速 数学作业 description solution code Arc of Dream description solution code 数学作业 description solution ...
- 【codevs2304】【BZOJ1875】HH去散步,第一次的矩阵加速DP
传送门1 传送门2 写在前面:今天冒傻气 思路:我第一眼没有看出来它是个矩阵乘法加速DP,只觉得如果这个t小点就直接广搜可以了,后来发现网上的题解无一例外都是矩阵快速幂的时候,我的表情 后来看了看黄学 ...
- yolov5 6.1官方模板TensorRT加速保姆级图文教程
加速的基础流程今年春季已经写好了,可以完美复现加速. 需要补充的是运行export.py的报错,加一句: pip install onnx 这会写教程的时候,电脑是昨天新做的系统,没有python以及 ...
- ZZH与计数(矩阵加速,动态规划,记忆化搜索)
题面 因为出题人水平很高,所以这场比赛的题水平都很高. ZZH 喜欢计数. ZZH 有很多的数,经过统计,ZZH一共有 v0v_0v0 个 0 ,v1v_1v1 个 1,-,v2n−1v_{2^n ...
最新文章
- php跳转传值,php如何跳转页面并传值?
- 【C语言】C语言实现面向对象编程之封装
- 新疆自考大专计算机应用专业,新疆大学2017年新疆自考计算机信息管理(专科)考试计划...
- 程序员面试金典 - 面试题 16.03. 交点(数学)
- logstash-input-redis源码解析
- UpdataPanel学习之 RenderMode
- linux云服务器上安装JDK
- 神奇的编码C语言,神奇的fans (C语言代码)
- minikube start 使用Hyper-V
- Linux知识积累(2)dirname的使用方法
- python右对齐函数_Python这68个内置函数,建议你吃透!
- Win32环境下的Tomcat5.5.17与apache2.2的集群
- 用Notepad2替换Windows自带记事本
- 如何卸载mingw_MinGW和MSYS的自动安装
- 【Unity性能优化】ASTC压缩格式(Android)
- regeneratorRuntime is not defined
- 2016年东莞市小学生信息学竞赛试题 17倍
- 阿里云盘 Mac客户端(附mac/win版)v2.1.6中文内测版
- 我不要我觉得,我要你觉得--如何根据企业研发的现状实施DevOps
- 可靠传输的实现机制——回退N帧协议GBN(Go Back N)