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的正整数有多少 ...
随机推荐
- Mysql 索引基础
[1]什么是索引?为什么要建立索引? 索引,其实就是目录. 索引,用于快速找出在某个列中有某个特定值的行. 不使用索引,MySQL必须从第一条记录开始查找整张表,直到找出相关的行,那么表越大,查询数据 ...
- IDEA中MavenWeb项目没有新建servlet文件
解决方案: https://blog.csdn.net/Delicious_Life/article/details/89515363
- Delphi百度文字识别【支持通用文字识别、身份证识别、银行卡识别、驾驶证识别、行驶证识别、车牌识别等功能】
作者QQ:(648437169) 点击下载➨Delphi百度文字识别 百度api文档 [Delphi百度文字识别]支持 通用文字识别.通用文字识别(高精度版).通用文字识别(含位置信 ...
- cookielib模块 for python3
python2 可以直接安装cookielib模块 而py3却不能安装 故需要安装http模块 举例子: from http import cookiejar cookie = cookiejar.C ...
- 运行一个docker镜像并开机启动
记录,我用的liunx机是centos7.x 安装 安装Docker包$ sudo yum install docker-engine 启动Docker守护进程$ sudo service docke ...
- Privoxy搭建代理服务器
Privoxy搭建代理服务器 Docker Hub镜像地址 Dockerfile FROM alpine EXPOSE 8118 RUN apk --no-cache --update add pri ...
- 【openshift】OC命令部署Openshift
OC命令部署Openshift # install openshift wget -c https://github.com/openshift/origin/releases/download/v3 ...
- 四级CET大学词汇六级备份
Cet6六级中要考到法庭词汇的小故事 如何安排六级考试前的一个月1.每天按照我的要求去背单词2.做四套真题,词汇部分 只做词汇 3.做personal dictionary把真题中出现的所有不认识的 ...
- KVM on CubieTruck 原理以及网络性能相关思考
1.virtio框架包括哪些? (1)virtio:面向guest驱动的API接口,它在概念上将前端驱动附加到后端驱动,具体实现位于driver/virtio/virtio.c (2)Transpor ...
- 使用Docker搭建Elasticsearch集群环境
本篇文章首发于头条号单机如何搭建Elasticsearch集群?使用容器技术快速构建集群环境,欢迎关注头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_te ...