AcWing 321. 棋盘分割(记忆化搜索 二维区间DP 二维前缀和)

本文探讨了一种解决8x8棋盘分割问题的方法,通过动态规划求解n-1次划分操作后的子棋盘均方差最小问题。利用横切和纵切策略,详细阐述了状态转移方程,并展示了如何结合二维前缀和求解过程。时间复杂度为O(n^5)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题意:

给定一个 8×8 的棋盘,棋盘的 每个小方格 都有一个 权值 wx,y

每次我们可以对棋盘进行一次 横切竖切,将 棋盘 分成两块矩形的 子棋盘

分割完一次后,我们可以 选择两个 子棋盘 中的一个 再继续 递归 操作
在这里插入图片描述

可以发现题目中给的这个图片,右边这个并不是递归下去做的:他对第一次分割的两个矩形又分别进行了分割(题目要求我们只能保留一个继续分割

现需要把棋盘按照上述分割方案,分成 n 块(n−1 次划分操作)

求一个划分方案,使得各个子棋盘总分的均方差最小

思路:

本题如果用 动态规划 来分析,状态表示要至少开5维,记录分割操作的阶段,以及当前的棋盘状态

状态表示:
  • 集合:将左上角坐标为 (x1, y1),右上角坐标为 (x2, y2) 的子矩阵切分成 k 部分的所有方案
  • 属性:均方差(见题面中给出的公式)的最小值
状态计算:

以
第一次切分为例:

对于横切从上往下一共可有 7 种不同的位置,每个位置切分之后都会有上下部分两种选择,因此共有 14 种可能

对于纵切是类似的,从左往右一共有 7 种不同的位置,每个位置切分之后会有左右部分两种选择,因此也有 14 种可能

现假设某一类方案如下:

xi 处横切,且选择上面部分,所有这类方案都可分为两部分:

  • 继续选择上方部分切分的均方差的分值(根据定义 min=f(x1,y1,i,y2)min = f(x1, y1, i, y2)min=f(x1,y1,i,y2)
  • 剩余部分均方差的分值(这是个定值,可结合“二维前缀和”在O(1)的复杂度内求得)

可得上述情况①的状态转移方程:dp[x1][y1][x2][y2][k]=min(dp[x1][y1][i][y2][k−1]+get(i+1,y1,x2,y2))dp[x1][y1][x2][y2][k] = min(dp[x1][y1][i][y2][k-1] + get(i+1, y1, x2, y2))dp[x1][y1][x2][y2][k]=min(dp[x1][y1][i][y2][k1]+

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值