bzoj1008】的更多相关文章

欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1008 题意概括 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 题解 水题一道. 我们考虑发生越狱的是总数-不发生越狱的. 总数很好算:就是mn 但是不发生的同样也很好算. 第一个位置,有m中选择,后面每一个位置都要和前面一个不一样,那么有m-1种选择. 所以是m*(m-…
洛谷3197&bzoj1008 越狱 Luogu bzoj 题解 所有状态减合法状态.SBT 答案为\(m^n-m*(m-1)^{n-1}\)太SB不解释 注意取膜的问题.相减可能减出负数,而SB的C++又不给正数结果,所以要加上膜数再膜.被坑了一次. Code // It is made by XZZ #include<cstdio> #include<algorithm> #define Fname "BZOJ1008" using namespac…
bzoj1008: [HNOI2008]越狱      O(log N)----------------------------------------------------------------------------------------------------------------------------------------- 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少…
快速面裸题(显然的m^n-m*(m-1)^(n-1)) 然后,,,就没有然后了 #include <cstdio> #define wzf2000 100003 long long n,m; long long mi(long long ans,long long n) { ; ) ) base=(ans*base)%wzf2000,n--; ; return (base*ans)%wzf2000; } int main() { scanf("%lld%lld",&…
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…
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…
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1008 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100003取余 Sample Input 2 3 Samp…
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: 3140  Solved: 1317[Submit][Status] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Outpu…
1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 6192 Solved: 2636 [Submit][Status][Discuss] Description 监狱有连续编号为1-N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^1…
以前水过的水题 原题: 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 1<=M<=10^8,1<=N<=10^12 稍用点组合数学的知识即可推出答案,不过我没看出来 用减法原理,有相邻一样的个数是所有个数m^n-没相邻一样的个数第一个数有m种可能,第二个数要和它不一样就有m-1种可能,第三个数要和第二个数不一样又有m-1种可能,没相邻一样的个数就是m*((m…
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…
思路:首先所有情况就是m^n,然后不可能发生越狱的情况就是第一个有m种选择,第二个要与第一个不同就是m-1种选择,第三个要与第二个不同也是m-1种选择,然后不可能发生越狱的情况数就是m*(m-1)^(n-1),然后用总方案数减去它即可. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace…
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…
题面 题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 输入输出格式 输入格式: 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 输出格式: 可能越狱的状态数,模100003取余 输入样例#1: 2 3 输出样例#1: 6 题解 这种题目不会做??? 这么显然的排列组合 正难则反 减去合法的方案就行啦... 超简单的题目呀... #i…
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)^{n-1}$,就是总的减去不越狱的,不越狱就每次都选一个和上一个不一样的…
题解: 要求有几种方案可以越狱,可以用总方案-不会越狱的方案 那么总方案就是m^n 那么考虑不会越狱的方案 显然第一个人有m中,后面都是m-1中(和前一个不一样) 答案就是m^n-m*(m-1)^(n-1) 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ll n,m; ll ksm(ll x,ll y) { ); ll z=ksm(x,y/); z*=z;z%=M; ==)(z*=x)%=M;…
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…
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…
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) 分析 注意一…
2013-11-17 10:38 原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1008 比较水的题,直接矩阵乘法+递推就OK了 w[i,0]代表i个人不越狱的方案, w[i,1]代表i个人越狱的方案, 那么有 w[i,1]:=w[i-1,0]+w[i-1,1]*m; w[i,0]:=w[i-1,0]*(m-1); 然后用矩阵乘法加速. 然后我们可以发现,w[i,0]就是(m-1)^(i-2)*m 那么n个人,一共有n^m种方案,减去w…
根据 高中的数学知识 即可推出 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…
题意: 思路: #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cstring> #define MOD 100003 typedef long long LL; using namespace std; LL n,m,ans; LL pow(LL x,LL y) { LL s=; LL tmp=x%MOD; while(y) {…
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…
题目: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…
Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 数据范围巨大,排除线性做法之后会想到O(1)做法. 首先,如果不考虑题目中的限制条件,那么,状态数为m^n.接下来我们考虑去掉其中不会越狱的状态. 越狱的条件是两个人的信仰相同(达成共识),所以相邻的两个人信仰不同就可以避免发生越狱.第一个人有m种宗教可以信仰,他的邻居(因为是第一个所以只有一个邻居)只…
题目链接: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…
[题意分析] 求长度为n,元素大小在[1,m]∩N的序列中,有多少个序列中存在相同的相邻元素. [解题思路] 小学奥数题.. 总序列数:S=mn 不存在相同的相邻元素的序列数:T=m*(m-1)n-1(第一个元素有m种取法,剩下的每个元素都不能跟左边的元素相同,都有m-1种取法) 故ans=S-T=mn-m*(m-1)n-1.复杂度O(log2n). [参考代码] 我还不知道Py时写的代码.. #include<cmath> #include<cstdio> #include<…