POJ3734(矩阵快速幂)
\(假设现在到第i个积木\)
\(红绿恰都是偶数a种方案,恰都是奇数为b种方案,一奇一偶为c种方案\)
\(由此考虑i+1个积木的情况\)
Ⅰ.一奇一偶的方案
\(如果第i层恰是奇数的情况,那么本次只要染色为红绿即可\)
\(如果第i层恰是偶数的情况,那么本次只要染色为红绿即可\)
\(如果第i层一奇一偶,那本次只要染色为蓝黄即可。\)
\(综上所诉,c1=a*2+b*2+c*2;\)
Ⅱ.恰为偶的方案
\(同理得,a1=a*2+c\)
Ⅲ.恰为奇的方案
\(同理得,b1=b*2+c\)
那么接下来就可以构造矩阵了。
\(对于|a,b,c|想得到|a*2+c,b*2+c,a*2+b*2+c*2|\)
在草稿纸上凑一凑就可以得到系数矩阵为
\begin{matrix}
2&0&2\\
0&2&2\\
1&1&2
\end{matrix}
\right]
\]
接下来就是套模板了。
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int mod=10007;
struct rce{
int m[4][4];
rce(){memset(m,0,sizeof(m));}
};
rce operator * (rce a,rce b)
{
rce ans;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
{
ans.m[i][j]=0;
for(int k=1;k<=3;k++)
ans.m[i][j]=(ans.m[i][j]+a.m[i][k]*b.m[k][j]%mod)%mod;
}
return ans;
}
rce init()
{
rce temp;
for(int i=0;i<=3;i++) temp.m[i][i]=1;
return temp;
}
rce quickpow(rce a,int n)
{
rce ans=init();
while(n)
{
if(n&1) ans=ans*a;
a=a*a;
n>>=1;
}
return ans;
}
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
rce chu,xi;
chu.m[1][1]=2,chu.m[1][3]=2;
xi.m[1][1]=xi.m[1][3]=xi.m[2][2]=xi.m[2][3]=xi.m[3][3]=2;
xi.m[3][1]=xi.m[3][2]=1;//初始化系数矩阵
xi=quickpow(xi,n-1);
chu=chu*xi;
cout<<chu.m[1][1]%mod<<endl;
}
}
POJ3734(矩阵快速幂)的更多相关文章
- Blocks [POJ3734] [矩阵快速幂]
题意: 有长度为n的一排格子,每个格子里面可以任意填入1,2,3,4四个数字,问1,2都为偶数个的方案 T组数据,每组数据一个n(<=1e9) 样例输入 2 1 2 样例输出 2 6 分析 设d ...
- poj3734矩阵快速幂
挑战上面的题目,感觉脑洞很大 分别找红蓝个数全为偶,全为奇,一奇一偶的个数ai,bi,ci 转移矩阵是| 2 1 0 |,是一个对称矩阵(会不会有什么联系.) | 2 2 2 | | 0 1 2 | ...
- 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)
题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...
- 51nod 1113 矩阵快速幂
题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...
- 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...
- HDU5950(矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...
- 51nod 1126 矩阵快速幂 水
有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...
- hdu2604(递推,矩阵快速幂)
题目链接:hdu2604 这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式) 可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS: ...
随机推荐
- 【高并发】高并发环境下如何优化Tomcat配置?看完我懂了!
写在前面 Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢? Tomcat运行模式 Tomca ...
- PHP 语法引用使用及实现
说明 这里基于 php7.2.5 进行测试,php7 之后内部结构变化应该不是太大,但与 php5.X 有差别. 什么是引用 在 PHP 中引用是一种数据类型 (结构),是指 指向同一个类型的数据结构 ...
- sql server临时删除/禁用非聚集索引并重新创建加回/启用的简便编程方法研究对比
前言: 由于新型冠状病毒影响,博主(zhang502219048)在2020年1月份从广东广州工作地回到广东揭阳产业转移工业园磐东街道(镇里有阳美亚洲玉都.五金之乡,素以“金玉”闻名)老家后,还没过去 ...
- 如何用python爬虫从爬取一章小说到爬取全站小说
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...
- F. 蚂蚁装修
单点时限: 2.0 sec 内存限制: 512 MB 还有一个月就开学了,爱学习的小蚂蚁想庆祝一下!于是它要把它的“家”装修一下.首先要做的就是贴地板.小蚂蚁“家”的地面可以看成一个2∗N 的方格 , ...
- 来个干货——使用VS2019发布.NET Core程序并部署到IIS的最新教程
使用VS2019发布.NET Core程序并部署到IIS,不管你是使用.NET Core开发的是Web API还是网站类的程序,如果你是部署到IIS,那么下面的内容都适合于你,不会将.NET Core ...
- [Java网络安全系列面试题] GET 和 POST 的区别在哪里?
一. 概述 本文的内容源自其他博客的总结,属于笔者的读书笔记,结构如下: HTTP 的请求报文 GET 方法的特点 POST 方法的特点 GET 和 POST 的区别 二. HTTP 的请求报文 首先 ...
- 页面性能分析-Chrome Dev Tools
一.分析面板介绍 进行页面性能快速分析的主要是图中圈出来的几个模块功能: Network : 页面中各种资源请求的情况,这里能看到资源的名称.状态.使用的协议(http1/http2/quic...) ...
- 手机app测试用例怎么写?手机app测试点有哪些?只有干货没有水分,错过绝对后悔!
一.前言 在当今竞争激烈的市场上一个APP的成功离不开一个可靠的测试工程师.因此,对功能和用户体验有特殊关注的App进行全面测试是必不可少的.如何做到测试用例的百分百覆盖一直是测试用例编写过程中 ...
- [http 1.1] M-POST w3
5. Mandatory HTTP Requests An HTTP request is called a mandatory request if it includes at least one ...