wiki with 35(dp+矩阵快速幂)
Problem J. Wiki with 35
Input file: standard input Time limit: 1 second
Output file: standard output Memory limit: 256 megabytes
从前,有一对夫妻生了五胞胎,这对夫妻为了让这五兄弟比较容易让老师记得,分别给他们取名"1"、
"3"、 "5"、 "7"、 "9"。而"3"和"5"这两兄弟异常的聪明!
有一天, Wiki老师为了考验"3"和"5"两兄弟的智力和默契程度,出了一道这样的题目:
现在有n个连续的方格,需要他们俩往里面写上五兄弟的名字(也就是1、 3、 5、 7、 9), 要求这n个方格
需要填满,且只能填上他们五兄弟的名字,题目需要保证这俩兄弟的名字出现的次数一个是奇数次,一
个是偶数次,问,一共有多少种可能性?(比如说有1个方格,那么兄弟两个可以填入3或者5,一共有2种
可能性)
Input
有多个测试数据输入,每行一个正整数n(1 <= n <= 109),表示连续方格的个数
输入n = 0时结束
Output
每输出一个答案换一行(答案可能很大,需要对109 + 7取模)
Sample
| standard input | standard output |
| 1 2 0 | 2 12 |
思路:
动态规划,计算方法:矩阵快速幂
状态转移方程:(一奇一偶为满足要求的状态)
f[i][0] = 3f[i-1][0] + 2f[i-1][1] ;不满足要求的状态
f[i][1] = 2f[i-1][0] + 3f[i-1][1] ;满足要求的状态
#include <iostream>
#include <algorithm>
#include <cstring> using namespace std ; /*
3 2
2 3
*/ const int mod = 1e9 + ;
typedef unsigned long long ULL ; struct node{
ULL m[][] ;
};
ULL dp[] ;
int m ; node mul(node p,node q){
node tmp ;
memset(tmp.m,,sizeof tmp.m) ;
for(int i=;i<;i++){
for(int j=;j<;j++){
for(int k=;k<;k++){
tmp.m[i][j] = (tmp.m[i][j] + p.m[i][k] * q.m[k][j]) % mod ;
}
}
}
return tmp ;
} node qmi(node q,int k){
node base ;
memset(base.m,,sizeof base.m) ;
for(int i=;i<;i++){
base.m[i][i] = ;
}
while(k){
if(k&){
base = mul(base,q) ;
}
q = mul(q,q) ;
k >>= ;
}
return base ;
} int main(){
while(cin >> m, m){
node a,b ;
memset(a.m,,sizeof a.m) ;
memset(b.m,,sizeof b.m) ;
a.m[][] = a.m[][] = ;
a.m[][] = a.m[][] = ;
dp[] = ,dp[] = ;
b = qmi(a,m) ;
ULL ans = ;
for(int i=;i<;i++){
ans += (dp[i] * b.m[][i]) % mod ;
}
cout << ans << endl ;
} return ;
}
...
wiki with 35(dp+矩阵快速幂)的更多相关文章
- bnuoj 34985 Elegant String DP+矩阵快速幂
题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985 We define a kind of strings as elegant s ...
- HDU 5434 Peace small elephant 状压dp+矩阵快速幂
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5434 Peace small elephant Accepts: 38 Submissions: ...
- 【BZOJ】2004: [Hnoi2010]Bus 公交线路 状压DP+矩阵快速幂
[题意]n个点等距排列在长度为n-1的直线上,初始点1~k都有一辆公车,每辆公车都需要一些停靠点,每个点至多只能被一辆公车停靠,且每辆公车相邻两个停靠点的距离至多为p,所有公车最后会停在n-k+1~n ...
- 【BZOJ】4861: [Beijing2017]魔法咒语 AC自动机+DP+矩阵快速幂
[题意]给定n个原串和m个禁忌串,要求用原串集合能拼出的不含禁忌串且长度为L的串的数量.(60%)n,m<=50,L<=100.(40%)原串长度为1或2,L<=10^18. [算法 ...
- BZOJ5298 CQOI2018 交错序列 【DP+矩阵快速幂优化】*
BZOJ5298 CQOI2018 交错序列 [DP+矩阵快速幂优化] Description 我们称一个仅由0.1构成的序列为"交错序列",当且仅当序列中没有相邻的1(可以有相邻 ...
- Codeforces 621E Wet Shark and Block【dp + 矩阵快速幂】
题意: 有b个blocks,每个blocks都有n个相同的0~9的数字,如果从第一个block选1,从第二个block选2,那么就构成12,问对于给定的n,b有多少种构成方案使最后模x的余数为k. 分 ...
- codeforces E. Okabe and El Psy Kongroo(dp+矩阵快速幂)
题目链接:http://codeforces.com/contest/821/problem/E 题意:我们现在位于(0,0)处,目标是走到(K,0)处.每一次我们都可以从(x,y)走到(x+1,y- ...
- [BZOJ1009] [HNOI2008] GT考试(KMP+dp+矩阵快速幂)
[BZOJ1009] [HNOI2008] GT考试(KMP+dp+矩阵快速幂) 题面 阿申准备报名参加GT考试,准考证号为N位数X1X2-.Xn,他不希望准考证号上出现不吉利的数字.他的不吉利数学A ...
- hdu5564--Clarke and digits(数位dp+矩阵快速幂)
Clarke and digits 问题描述 克拉克是一名人格分裂患者.某一天,克拉克变成了一个研究人员,在研究数字. 他想知道在所有长度在[l,r]之间的能被7整除且相邻数位之和不为k的正整数有多少 ...
随机推荐
- JQuery高级(二)
3. 事件绑定 1. jquery标准的绑定方式 * jq对象.事件方法(回调函数): * 注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为. * 表单对象.submit();//让表单提 ...
- 深度学习-InfoGAN论文理解笔记
在弄清楚InfoGAN之前,可以先理解一下变分推断目的以及在概率论中的应用与ELBO是什么,以及KL散度 https://blog.csdn.net/qy20115549/article/detail ...
- coco2dx--Permission denied
在终端输入./cocos.py....创建项目时,出现Permission denied,是权限问题,可以先使用chmod命令获得权限,输入chmod u+x ./cocos.py 回车,接着再使用c ...
- LOJ #3103. 「JSOI2019」节日庆典
题意 给定字符串 \(S\) ,对于 \(S\) 的每个前缀 \(T\) 求 \(T\) 所有循环同构串的字典序最小的串,输出其起始下标.(如有多个输出最靠前的) \(|S| \le 3 \times ...
- IDEA设置虚拟机参数
第一步:打开“Run->Edit Configurations”菜单 第二步:选择“VM Options”选项,输入你要设置的VM参数 第三步:点击“OK”.“Apply”后设置完成
- [SDOI2008]仪仗队(欧拉函数)
题目 [SDOI2008]仪仗队 解析 这个题,我也不知道他们的soltion是怎么写的这么长的. 我们发现我们一次看一条直线上的第一个点,也就是说,若两个点斜率\(k=\frac{y}{x}\)相同 ...
- Weak Session IDs
工具的使用 首先github上下载火狐插件(正版收费),按F12调用 服务器生成sessionID通过response返回给浏览器,sessionID存放在浏览器cookie中,然后再通过cookie ...
- vue插件(还真是第一次接触)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Flexbox布局入门笔记
1.display:flex 设定为Flexbox布局容器. 2.flex-direction: row表示在水平方向展开可伸缩项:column表示在垂直方向展开可伸缩项:总之就是定义主轴(侧轴方向) ...
- 手写MQ框架(三)-客户端实现
一.背景 书接手写MQ框架(二)-服务端实现 ,前面介绍了服务端的实现.但是具体使用框架过程中,用户肯定是以客户端的形式跟服务端打交道的.客户端的好坏直接影响了框架使用的便利性. 虽然框架目前是通过 ...