LOJ10196越狱
题目描述
原题来自: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 }
LOJ10196越狱的更多相关文章
- 【转】 iOS9.2-iOS9.3.3越狱插件清单
以下是iOS9.3.3越狱插件清单 原文地址:http://bbs.feng.com/read-htm-tid-10668605.html 序列 支持与否 插件名称 兼容版本 支持设备 1 是 20 ...
- 微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析
作者:蒸米@阿里移动安全 序言 微信作为手机上的第一大应用,有着上亿的用户.并且很多人都不只拥有一个微信帐号,有的微信账号是用于商业的,有的是用于私人的.可惜的是官方版的微信并不支持多开的功能,并且频 ...
- ios7迎来完美越狱,果粉狂欢!
[我要]最近一则iOS7可以完美越狱的消息,可是乐坏了期待已久的果粉们.据科技博客网站Gizmodo报道,越狱专家Evasi0n团队最近攻破苹果的 iOS7系统,赶在圣诞前发布了iOS7的越狱.消息一 ...
- IOS判断设备是否已越狱
转自:http://www.cnblogs.com/supercheng/archive/2012/12/05/2804166.html - (BOOL)isJailbroken { BOOL jai ...
- 【洛谷P3197】越狱
本来还想了一会dp-- 然而一看数据范围明显是数论-- 那么推一推.. 我们发现可以用总方案数减去不会越狱的方案数 那么我们考虑在长度为n的数列中填数 首先第一个位置有m种选择,后面的位置: 总方案: ...
- iOS设备的越狱方法
最近公司的事情很忙,在开发一个类似于微信的App,经常加班,所以也没有时间去更新微信公众账号的内容了.iOSJailbreak, 申请这个账号大概有一个多月了吧,发布的内容不多,更多是针对开发者的内容 ...
- iOS越狱开发(一)
做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结.个人不推荐使用盗版,这里主要以技术介绍为主. 这个系列里面主要介绍怎样进行越狱开发,涉及到以下几个 ...
- 借助91助手,将ibook中的pdf文件拷贝至其它的pdf阅读器中(ios设备无需越狱)
有时候在使用ios自带的ibook阅读pdf文件的时候,会发现ibook有些功能并不是那么方便.最近我就遇到了一例,我想在ibook中放一本比较大的pdf书,页数有几百吧,pdf文件本身每一章节都是有 ...
- 越狱后的ios如何用apt-get 安装各种命令
越狱后的ios如何用apt-get 安装各种命令 iphone越狱后想玩linux. 1. ssh 客户端:ssh Term Pro. 2. 只装客户端是连不上的,还得一个 ssh connect ...
随机推荐
- JAVA多线程下高并发的处理经验
java中的线程:java中,每个线程都有一个调用栈存放在线程栈之中,一个java应用总是从main()函数开始运行,被称为主线程.一旦创建一个新的线程,就会产生一个线程栈.线程总体分为:用户线程和守 ...
- How to install android studio on ubuntu14.04
First: open the web page: https://developer.android.com/studio/index.html download the Android Studi ...
- 人脸识别--SeetaFace
检测:http://download.csdn.net/detail/qq_14845119/9639840 对齐:http://download.csdn.net/detail/qq_1484511 ...
- Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器
一.硬件准备 USB转ESP8266两块.DHT11温度湿度传感器.ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别) USB转ESP8266 ...
- 设置Safari禁止访问某个网站
经过调查有三种方法可以做到:1,创立新的登录账户,然后进行家长控制:2,安装第三方的应用软件Self Control:3,其他方式 推荐大家使用下面的这个方式:三步即可 1:打开访达(Finder), ...
- 基于snort、barnyard2和base的 网络入侵检测系统的部署与应用
1.项目分析 1.1.项目背景 伴随着互联网产业的不迅猛发展,新兴技术层数不穷,互联网通讯技术逐渐成为了各行各业不可替代的基础设施,越来越多的业务都是依靠互联网来得以实现.随着我国科技产业的飞速发展, ...
- Yaml spring boot 二维数组写法
Yaml channel: info: - channel-ip: 192.168.1.40 channel-no: 5182001001 - channel-ip: 192.168.1.10 cha ...
- java容器-Collection
1.介绍 collection<E>是java中容器的最主要的接口,该接口继承于Iterable<E>,使得java中所有实现Collection<E>的容器 ...
- Spring(1) --入门(IoC,AOP)
说说你对spring的理解? Spring框架是一个轻量级的企业级开发的一站式解决方案,所谓一站式解决方案就是可以基于Spring解决Java EE开发的所有问题.Spring框架主要提供了IoC容器 ...
- Linux命令整理,用户管理,用户组管理,系统管理,目录管理常用命令
知识点梳理 Linux课堂笔记 学习目标 能够知道什么是Linux系统以及它的应用场景 能够独立完成安装VMware虚拟机和网络配置 能够独立完成安装CentOS以及远程终端SecureCRT 能够熟 ...