题目描述
监狱有连续编号为 1…N的 N个房间,每个房间关押一个犯人,有 M 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。
输入输出格式
输入格式:
输入两个整数 m,n
输出格式:
可能越狱的状态数,模 100003 取余
m≤10^8,n≤10^12
解法
这道题我是先考虑的dp,状态设f[i][j]f[i][j]表示只考虑前 i 个人,第 i 个人信仰 j 宗教的合法状态数。然后发现转移很困难。。。反正我是没想出来。于是忽然想到,可以用状态总数减去不合法的状态数
先想状态总数,每个人有m种可能信仰的宗教,一共n人,总数就是m*m*m*……*m,也就是

该博客讨论了洛谷P3197题目的越狱问题,其中涉及监狱中犯人按宗教分组可能导致的越狱情况。博主提出,通过计算所有可能状态总数减去非法状态(相邻犯人宗教不同)的数量来解决这个问题。给出了使用快速幂算法求解的时间复杂度为O(log n)的解法,并分享了实现代码。
最低0.47元/天 解锁文章
543

被折叠的 条评论
为什么被折叠?



