P2049 魔术棋子 题解

博客探讨了一道名为'魔术棋子'的题目,描述了一个棋子在n×m的棋盘上行走的问题,棋盘格子含有数字,棋子经过会乘以格子数字。要求求解棋子到达右下角时,数字模k的可能结果。文章提到,由于路径数量巨大,不能枚举所有可能,而是从答案出发,通过动态规划的方法进行验证。提出了动态规划状态转移方程并避免使用逆元,简化了计算。最后,文章指出动态规划的不同形式,强调解决问题的思路灵活性。
摘要由CSDN通过智能技术生成

博客园同步

原题链接

简要题意:

在一个 n × m n \times m n×m 的魔术棋盘中,每个格子中均有一个整数,当棋子走进这个格子中,则此棋子上的数会被乘以此格子中的数。一个棋子从左上角走到右下角,只能向右或向下行动,请问此棋子走到右下角后,模 % k \% k %k 可以为几?

(原题题意足够简要了吧)

n , m , k ≤ 100 n,m,k \leq 100 n,m,k100.

考虑一个很朴素的做法, O ( n m k ) \mathcal{O}(nmk) O(nmk) 的那种。

很显然我们不可能算出所有路径的答案( C n + m m C_{n+m}^m Cn+mm 种的级别大家应该都清楚),所以说我们可以从答案入手。

枚举一个答案,看它能不能是合法的答案。

对于 ( i , j ) ( i > 1 , j > 1 ) (i,j) (i > 1 , j > 1) (i,j)(i>1,j>1) 点,其数为 a i , j a_{i,j} ai,j,如何验证 a i , j → l a_{i,j} \rightarrow l ai,j

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值