垒骰子 (DP+矩阵快速幂)

这篇博客介绍了如何运用动态规划(DP)和矩阵快速幂的方法解决垒骰子的问题。博主通过对比斐波那契数列的例子,阐述了如何构建选择性累加的矩阵,并利用冲突矩阵来处理不同骰子面之间的冲突。最终,通过计算冲突矩阵并结合DP状态,求得问题的解决方案。
摘要由CSDN通过智能技术生成

题目链接

思路:直接把学长以前发的题解截个图吧。比较详细。


那么,我们如何在叠骰子里应用上述算法?在动态规划解法中,dp[i][j]的值等于前一高度所 有方案的选择性累加,一说到选择性累加,是不是十分类似与矩阵快速幂博客中斐波那契数 列的那个只包含 0 和 1 的矩阵?在斐波那契例子中,那个只包含 0 和 1 的矩阵就是这样通过 列向量的 0 或 1 对右边矩阵进行选择累加,从而得出左边矩阵的。
那么,我们也可以通过类似的结构来完成对骰子方案的选择性累加。
接下来,我们需要沿用在 dp 解法中提到的冲突数组,因为冲突数组实际上就是我们的选择 性累加,在这里,我们将它变为冲突矩阵,并且更正一下对它的定义:

com[i][j]表示:有一个点数为 i 的面, 它的反面与点数为 j 的面存在冲突。 dp[i][j]表示 i 个骰子最后一个骰子朝上的面为 j 点时的情况个数。



最后提一句吧为什么代码中没有dp数组,因为一个骰子的情况下,各种情况可能都是1,因此,算出con矩阵最后的结果后再乘dp[1][j],得到dp[n][j],最后我们要把d

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值