洛谷P3197 【HNOI2018】越狱

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

监狱有连续编号为 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,也就是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值