P3197越狱】的更多相关文章

花费了好长时间,终于刷掉了这道题. 题目在这里(洛谷)  (信息学奥赛一本通) 嗯,没错,这是一道快速幂的题,不会快速幂点这里 好现在开始分析,这道题用小学奥数的思想就可以想到,直接算有多少种可能比较难,所以就算出所有的情况再减去不越狱的情况,就是越狱的情况了.所有情况就是mn,不发生的情况就是m*(m-1)(n-1),所以,发生的情况就是mn-m*(m-1)(n-1). 然后就成功的算出了发生的情况数. 代码如下 #include<iostream> #define LL long long…
P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为\(1-N\)的\(N\)个房间,每个房间关押一个犯人,有\(M\)种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 输入输出格式 输入格式: 输入两个整数 \(M,N\) 输出格式: 可能越狱的状态数,模100003取余 说明 \(1≤M≤10^8\) \(1≤N≤10^{12}\) 我们发现,直接求发生越狱的状态不是不可能,但时间复杂度过不去,很难用矩阵乘法优化. 不妨…
P3197 [HNOI2008]越狱 考虑所有状况:显然是$m^{n}$ 考虑所有不合法状况: 显然相邻两个数不相等 那么后面$n-1$个数就有$(m-1)^{n-1}$种取法 第一个数前面没有相邻的,那么就有$m$种取法 ∴不合法状况有$m*(m-1)^{n-1}$种 ∴$ans=m^{n}-m*(m-1)^{n-1}$ #include<iostream> #include<cstdio> #include<cstring> #define re register…
题目传送门 实际上昨天大鸡哥已经讲过这题了,结果没记住,今天一道相似的题就挂了......吃一堑长一智啊. 思路大致是这样:如果直接算发生越狱的情况会比较复杂,所以可以用间接法,用安排的总方案-不会发生越狱的方案就可以了.安排的总方案数很显然就是m^n,那么只需要求不会发生越狱的方案数就可以了.分析一下,首先在第一个房间安排一种宗教,那么还剩下m-1种宗教,n-1个房间,因为要与第一个房间不同,则第二个房间就有m-1种安排法,以此类推,第三个房间,第四个以及后面所有房间都是m-1种安排法,所以总…
P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为 \(1-N\) 的 \(N\) 个房间,每个房间关押一个犯人,有 \(M\) 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 输入格式 输入两个整数 \(M,N\) 输出格式 可能越狱的状态数,模 \(100003\) 取余 输入输出样例 输入 #1 2 3 输出 #1 6 说明/提示 6种状态为(000)(001)(011)(100)(110)(111) \(1 \l…
本来还想了一会dp-- 然而一看数据范围明显是数论-- 那么推一推.. 我们发现可以用总方案数减去不会越狱的方案数 那么我们考虑在长度为n的数列中填数 首先第一个位置有m种选择,后面的位置: 总方案:m种:不会越狱:m-1种 快速幂. #include<cstdio> #include<cstring> #define ll long long using namespace std; ; ll n,m; ll read(){ ll sum=; char ch=getchar();…
题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 输入输出格式 输入格式: 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 输出格式: 可能越狱的状态数,模100003取余 输入输出样例 输入样例#1: 2 3 输出样例#1: 6 说明 6种状态为(000)(001)(011)(100)(110)(111) /*题目要求越狱方案数,而…
题目来源:洛谷 题目描述 监狱有连续编号为 1…N 的 N 个房间,每个房间关押一个犯人,有 M 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 输入输出格式 输入格式: 输入两个整数 M,N 输出格式: 可能越狱的状态数,模 100003取余 输入输出样例 输入样例#1: 2 3 输出样例#1: 6 说明 6种状态为(000)(001)(011)(100)(110)(111) 1≤M≤10^81≤N≤10^12 解析: 这道题需要一…
构造长度为n的串,给定m种颜色,求使得相邻两位的颜色相同的方案数 显然可以看出长度为n的串染m种颜色的总方案数为$m^{n}$ 然后来考虑相邻两位颜色不同的方案 对于第一位,有m种选择 对于剩余的n-1位,有m-1种选择 所以相邻两位颜色不同的方案数就是 $m*(m-1)^{n-1}$ 最后就可以快乐的用快速幂求答案了 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std…
题目描述 原题来自:HNOI 2008 监狱有连续编号为 111 到 nnn 的 nnn 个房间,每个房间关押一个犯人.有 mmm 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人信仰的宗教相同,就可能发生越狱.求有多少种状态可能发生越狱. 输入格式 输入两个整数 mmm 和 nnn. 输出格式 可能越狱的状态数,对 100003100003100003 取余. 样例 样例输入 2 3 样例输出 6 样例说明 所有可能的 666 种状态为:{0,0,0},{0,0,1},{0,1,1},{1…