HNOI 2008 越狱

codevs 1851 越狱

http://codevs.cn/problem/1851/

2008年湖南省队选拔赛

时间限制: 10 s

空间限制: 128000 KB

题目描述 Description

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

输入描述 Input Description

输入两个整数M,N.1<=M<=10^8,1<=N<=10^12

输出描述 Output Description

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

样例输入 Sample Input

2 3

样例输出 Sample Output

6

数据范围及提示 Data Size & Hint

6种状态为(000)(001)(011)(100)(110)(111)

排列组合+同余+快速幂

问题转化:有m种数,填到n个格子里,每种数有无限使用次,求使两个同样的数相邻的方案数

ans=所有的填数方案-任意两个数都不相邻的方案

=m^n-m*[(m-1)^(n-1)]

解释:每一个格子可以选m个数,有n个格子,所以总方案数=m^n

任意两个数都不相邻,第一个数有m中填法,后面n-1个数都有m-1种填法(除了前一个数不能填之外,其余的m-1种都可以)

A-B可能会得到负数

所以(A-B+MOD)%MOD

#include<cstdio>
#define mod 100003
using namespace std;
long long n,m;
long long mi(long long a,long long b)
{
    long long ans=1;
    for(;b;b>>=1,a=a*a%mod)
     if(b&1)  ans=ans*a%mod;
    return ans;
}
int main()
{
    /*freopen("prisona.in","r",stdin);
    freopen("prisona.out","w",stdout);*/
    scanf("%lld%lld",&m,&n);
    long long k=(mi(m,n)-m*mi(m-1,n-1)%mod+mod)%mod;
    printf("%lld",k);
}
时间: 2024-11-16 19:17:32

HNOI 2008 越狱的相关文章

[BZOJ 1008] [HNOI 2008] 越狱

1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5041  Solved: 2177[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10

BZOJ 1010 玩具装箱toy(四边形不等式优化DP)(HNOI 2008)

Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的.同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,形式地说如果将第i件玩具到第j个玩具放到一个容器中,那么容器的长度将为 x=j-i+Sigma(Ck) i<

【BZOJ】【1008】【HNOI】越狱

快速幂 大水题= = 正着找越狱情况不好找,那就反过来找不越狱的情况呗…… 总方案是$m^n$种,不越狱的有$m*(m-1)^(n-1)$种= = 负数搞搞就好了…… 莫名奇妙地T了好几发…… 1 /************************************************************** 2 Problem: 1008 3 User: Tunix 4 Language: C++ 5 Result: Accepted 6 Time:0 ms 7 Memory:8

[BZOJ 1010][HNOI 2008] 玩具装箱toy

比较基础的斜率优化DP详见以下2篇博客 http://www.cnblogs.com/proverbs/archive/2012/10/06/2713109.html http://blog.163.com/myq_952/blog/static/863906320112711750378/ 主要总结斜率优化时的步骤 1.证明较优决策点对后续状态影响的持续性 2.求斜率方程:一般化为左边是J,K,右边是I的形式 3.规定队列的维护规则 4.看决策是否又单调性,没有的话有应该怎样维护 本题的代码

【BZOJ 1010】【HNOI 2008】玩具装箱 toy

借着这个题学习了一下dp的斜率优化,感觉这东西好神啊... 先说一下裸的O(n2)dp吧: s[i]=∑i=1ic[i] 显然我们有 f[i]=mink=0i?1f[k]+(s[i]?s[k]?L)2 然而这个转移是O(n2) 的,在n=50000时无法接受,然后我们来考虑一下斜率优化. 我们设定j<k<i 但k比j优 那么 f[k]+(s[i]?s[k]+L)2<f[j]+(s[i]?s[j]+L)2 展开得 f[k]+s[i]2?2?s[i]?(s[k]+L)+(s[k]+L)2&l

[BZOJ1004](HNOI 2008) Cards

Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目 前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红色,Sb张蓝色,Sg张绝 色.他又询问有多少种方案,Sun想了一下,又给出了正确答案. 最后小春发明了M种不同的洗牌法,这里他又问Sun有多少种不同的染色方案.两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(即可以使用多种洗牌 法,而每种方法可以使用多次)洗成另一种.Sun发现这个问题有点难

[补档][HNOI 2008]GT考试

题目 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2...Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2...Am. A1和X1可以为0 INPUT 第一行输入N,M,K.接下来一行输入M位的数. N<=10^9,M<=20,K<=1000 OUTPUT 阿申想知道不出现不吉利数字的号码有多少种,输出模K取余的结果. SAMPL

【凸壳】【HNOI 2008】【bzoj 1007】水平可见直线

1007: [HNOI2008]水平可见直线 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 4567 Solved: 1686 Description 在xoy直角坐标平面上有n条直线L1,L2,-Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的. 例如,对于直线: L1:y=x; L2:y=-x; L3:y=0 则L1和L2是可见的,L3是被覆盖的. 给出n条直线,表示成y=Ax+B的形式(|A|,|

【BZOJ 1043】【HNOI 2008】下落的圆盘 判断圆相交+线段覆盖

计算几何真的好暴力啊. #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define max(a,b) (a) > (b) ? (a) : (b) #define N 1003 using namespace std; const double Pi = acos(-1); inline int dcmp(double x) {return (fabs(x)