[BZOJ1008] [HNOI2008] 越狱 (数学)】的更多相关文章

Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100003取余 Sample Input 2 3 Sample Output 6 HINT 6种状态为(000)(001)(011)(100)(110)(111) Source…
bzoj1008: [HNOI2008]越狱      O(log N)----------------------------------------------------------------------------------------------------------------------------------------- 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5099  Solved: 2207 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模1000…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8689  Solved: 3748 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果 相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MB[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模10000…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1008 题意概括 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 题解 水题一道. 我们考虑发生越狱的是总数-不发生越狱的. 总数很好算:就是mn 但是不发生的同样也很好算. 第一个位置,有m中选择,后面每一个位置都要和前面一个不一样,那么有m-1种选择. 所以是m*(m-…
Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100003取余 Sample Input 2 3 Sample Output 6 HINT 6种状态为(000)(001)(011)(100)(110)(111) 分析 注意一…
根据 高中的数学知识 即可推出 ans=m^n-m*(m-1)^(n-1) .快速幂取模搞一下即可. #include<cstdio> using namespace std; typedef long long ll; #define MOD 100003 ll n,m; ll Quick_Pow(ll x,ll p) { ; ll ans=Quick_Pow(x,p>>); ans=ans*ans%MOD; ) ans=ans*x%MOD; return ans; } int…
题目描述 监狱有连续编号为 1…N1…N 的 NN 个房间,每个房间关押一个犯人,有 MM 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 输入输出格式 输入格式: 输入两个整数 $M,N$ 输出格式: 可能越狱的状态数,模 100003100003 取余 输入输出样例 输入样例#1: 复制 2 3 输出样例#1: 复制 6 说明 6种状态为(000)(001)(011)(100)(110)(111) 1 \le M \le 10^8…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1008 (这样一道水题还因为忘记写 %lld WA了那么多遍) 发生越狱的状态数,就是全部状态减去不越狱的状态,那么就好算了: 也就是 m^n - m * (m-1)^(n-1) 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long…
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1008 组合计数的简单题,可能越狱的方案数等于总方案数-不可能越狱的方案数,则: 总方案数为:mn. 不可能越狱的方案数为m*(m-1)n-1,(第一个人有m种选法,之后的n-1个人有m-1种选法). #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ; ; inline ll read() { l…
http://www.lydsy.com/JudgeOnline/problem.php?id=1008 正着直接算有点难,我们考虑反着来,用全集减补集. 总的方案数为$m^n$.第一个人有$m$种可能,第二个人有$m-1$种可能,第三个人有$m-1$种可能……发现补集就是$m*(m-1)^{n-1}$.用快速幂搞搞就行了. #include<cstdio> #include<cstring> #include<algorithm> using namespace st…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7692  Solved: 3296[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10…
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…
1008: [HNOI2008]越狱 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100003取余 Sample Input 2 3 Sample Output 6 HINT 6种状态为(000)(001)(011)(10…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5166  Solved: 2242[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 10503  Solved: 4558[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=1…
P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为\(1-N\)的\(N\)个房间,每个房间关押一个犯人,有\(M\)种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 输入输出格式 输入格式: 输入两个整数 \(M,N\) 输出格式: 可能越狱的状态数,模100003取余 说明 \(1≤M≤10^8\) \(1≤N≤10^{12}\) 我们发现,直接求发生越狱的状态不是不可能,但时间复杂度过不去,很难用矩阵乘法优化. 不妨…
[HNOI2008]越狱 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 输入格式:输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 输出格式:可能越狱的状态数,模100003取余 Solution 1.直接计算所有的越狱方案不方便,考虑使用容斥原理分别计算总方案数和不越狱方案数,相减即可: 2.总方案数为 m^n,因为…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4788  Solved: 2060[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8689  Solved: 3748 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果 相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100…
1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 11361  Solved: 4914[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=1…
P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为 \(1-N\) 的 \(N\) 个房间,每个房间关押一个犯人,有 \(M\) 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 输入格式 输入两个整数 \(M,N\) 输出格式 可能越狱的状态数,模 \(100003\) 取余 输入输出样例 输入 #1 2 3 输出 #1 6 说明/提示 6种状态为(000)(001)(011)(100)(110)(111) \(1 \l…
[HNOI2008] 越狱 快速幂 水.考虑不发生越狱的情况:即宗教相同的都不相邻,一号任意放\(m\)种宗教的人,此后\(n-1\)个房间都放与上一个宗教不同的人,有\(m-1\)种,所以共有\(m*(m-1)^{n-1}\)种.答案即\(m^n-m*(m-1)^{n-1}\).快速幂即可. 注意,这里需要考虑模后相减为负的情况,此时将负值再加上模数变为正数即可. #include <cstdio> #define MOD 100003 #define ll long long using…
Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100003取余 Sample Input 2 3 Sample Output 6 HINT 6种状态为(000)(001)(011)(100)(110)(111) Source…
思路:首先所有情况就是m^n,然后不可能发生越狱的情况就是第一个有m种选择,第二个要与第一个不同就是m-1种选择,第三个要与第二个不同也是m-1种选择,然后不可能发生越狱的情况数就是m*(m-1)^(n-1),然后用总方案数减去它即可. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace…
https://www.lydsy.com/JudgeOnline/problem.php?id=1008 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 正难则反(反正我没想到,定式思维想求发生越狱结果根本求不出来orz) m^n是总状态数. 不发生越狱时,第一个人可以选m个宗教,往后所有人只能选n-1个宗教. 所以答案为m^n-m*(m-1)^(n-1) #includ…
传送门 应该是HNOI2008年最简单的一道题了吧……简单的组合数题,不过要换个思路. 我们直接考虑发生越狱的情况似乎有点复杂,那我们换个思路,考虑不发生越狱的情况,也就是两个有相同宗教的人不会坐在一起. 第一个人有m种宗教可以信仰,那么第2个就只有m-1种了,不过我们发现,之后,第3个人其实还可以信仰m-1种宗教……只要不和第2个人相同,第4个人和以后的人也同理.那么方案就是m * (m-1)^(n-1) 总的方案数是m^n,相减即为所求,注意取模的时候不要有负数. 看一下代码. #inclu…
http://www.lydsy.com/JudgeOnline/problem.php?id=1008 刚开始看不会做啊,以为是dp,但是数据太大!!!所以一定有log的算法或者O1的算法,,,,还是不会.. 看了题解,,太巧妙了!就是反过来想..所有情况-不会越狱的情况=答案....所有情况很好求,因为每个人都可以是任意种宗教,根据乘法原理,所有情况=m*m*m*m*...*m=m^n:而不会越狱的情况也很好求,因为约束只是临边的人不能是同种宗教,所以我们只要假设临边的人有m-1种选择,而这…
题目描述 监狱有连续编号为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) /*题目要求越狱方案数,而…