题目描述

原题来自:HNOI 2008

监狱有连续编号为 1 到 n 的 n 个房间,每个房间关押一个犯人。有 m 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人信仰的宗教相同,就可能发生越狱。求有多少种状态可能发生越狱。

输入格式

输入两个整数 m 和n 。

输出格式

可能越狱的状态数,对 100003 取余。

样例

样例输入

2 3

样例输出

6

样例说明

所有可能的 6 种状态为:

{0,0,0}{0,0,1}{0,1,1}{1,0,0}{1,1,0}{1,1,1}。

数据范围与提示

对于全部数据,1<=m<=1e8,1<=n<=1e12。

______________________________________________

动态规划,f[i]表示到第i个房间越狱的情况有多少种。

则:f[i]=f[i-1]*m+(m^(i-1)-f[i-1])=m^(i-1)+(m-1)f[i-1]

f[i-1]*m表示前i-1个房间已经出现越狱情况,则第i个房间随便放一个宗教的犯人都会出现越狱

(m^(i-1)-f[i-1])表示前i-1个房间没有出现越狱的情况等于所有的情况减去有越狱的情况。

数据太大,需要矩阵快速幂。

[ 0 , 1 ]          [m-1,0 ]

[m   ,m ]

______________________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long ll;
4 const ll mod=100003;
5 ll n,m;
6 struct jz22
7 {
8 ll jz[2][2];
9 jz22()
10 {
11 jz[1][0]=jz[1][1]=m;
12 jz[0][0]=m-1;
13 jz[0][1]=0;
14 }
15 jz22 operator * (jz22 const &a)const
16 {
17 jz22 b;
18 for(int i = 0;i<2;++i)
19 for(int j=0 ;j<2;++j)
20 {
21 b.jz[i][j]=0;
22 for(int k=0;k<2;++k)
23 b.jz[i][j]=(b.jz[i][j]+jz[i][k]*a.jz[k][j])%mod;
24 }
25 return b;
26 }
27 };
28 jz22 pow(jz22 a,ll p)
29 {
30 if(p==1)return a;
31 jz22 ans=pow(a,p/2);
32 ans=ans*ans;
33 ans.jz[0][0]%=mod;
34 ans.jz[0][1]%=mod;
35 ans.jz[1][0]%=mod;
36 ans.jz[1][1]%=mod;
37 if(p%2)
38 {
39 ans=ans*a;
40 ans.jz[0][0]%=mod;
41 ans.jz[0][1]%=mod;
42 ans.jz[1][0]%=mod;
43 ans.jz[1][1]%=mod;
44 }
45 return ans;
46 }
47 int main()
48 {
49 cin>>m>>n;
50 n--;
51 m%=mod;
52 jz22 a,b,c;
53 b=pow(a,n);
54 cout<<b.jz[1][0];
55 return 0;
56 }

最新文章

  1. .Net语言 APP开发平台——Smobiler学习日志:如何快速实现地图定位时的地点微调功能
  2. iOS推送遇到的问题
  3. java web(spring mvc) 获取请求host 和 如何获取静态页的相对路径
  4. TIOBE Index for November 2015(转载)
  5. 一篇文章,读懂 Netty 的高性能架构之道
  6. NOI2016 山西省省选 第二题序列
  7. Struts2 数据校验流程
  8. Codeforces Round #366 (Div. 2) C Thor(模拟+2种stl)
  9. 记录一下mvc发布
  10. cmd命令查看端口和进程信息
  11. 应用AXIS开始Web服务之旅(soap web services)——使用三种不同的语言访问创建的Web服务,分别是JAVA、VB、VC
  12. (中等) UESTC 94 Bracket Sequence,线段树+括号。
  13. 使用openXML 不用插件导出excel
  14. 通过response设置响应体
  15. git stash的用法
  16. CSS 参考手册
  17. spark集成hbase与hive数据转换与代码练习
  18. JedisPubSub
  19. EJB3.0之事务
  20. 原生JS强大DOM选择器querySelector与querySelectorAll

热门文章

  1. 加班申请单flowable中
  2. HTML中,大小不确定图片的水平垂直居中
  3. ThreadLocal源码深度剖析
  4. 备战金三银四!一线互联网公司java岗面试题整理:Java基础+多线程+集合+JVM合集!
  5. spark进行相同列的join时,只留下A与B关系,不要B与A
  6. 最实用的visual studio插件,值得收藏!
  7. #2020征文-TV# Tab切换选项卡同时更换内容
  8. kafka 异步双活方案 mirror maker2 深度解析
  9. 记一次使用Asp.Net Core WebApi 5.0+Dapper+Mysql+Redis+Docker的开发过程
  10. /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh: line 19: mysql: command not found