【GDKOI2013】贪吃蛇 题解

题目大意:

给出一张大小为 n ∗ m n*m nm 的矩阵,每一块都有一个权值 a i , j a_{i,j} ai,j ,可以随机选择起点,并且只能向右拐或向前走,不能碰到走过的路或走出图,求走过的路径权值和最大为多少。

数据范围:

1 ≤ n , m ≤ 32 , ∣ a i , j ∣ ≤ 1 0 4 1 \le n,m \le 32 , |a_{i,j}| \le 10^4 1n,m32,ai,j104

思路:

转移方程非常阴间。。。
看到数据范围 n , m ≤ 32 n,m \le 32 n,m32 发现使用搜索时间上过不去,所以考虑使用 D P DP DP
我们可以发现所有合法的路径一定包含一个或两个回环,如图:
在这里插入图片描述
所以我们可以先 D P DP DP 求出所有的回环,再将回环拼接在一起就可以了。
可以发现每一个回环的区别有:
1. 1. 1. 顺时针和逆时针(如图2的两个回环)
2. 2. 2. 结束的点(如图1在右下角,图2第一个回环在右下角,第二个回环在左下角)

所以可以设 f x , y , x x , y y , 0 / 3 , 0 / 1 f_{x,y,xx,yy,0/3,0/1} fx,y,xx,yy,0/3,0/1 表示这个回环是在左上角为 ( x , y ) (x,y) (x,y) ,右下角为 ( x x , y y ) (xx,yy) (xx,yy) 的矩阵上,且结束点在左上(左下,右上,右下)角,形状为顺时针(逆时针)的最大路径价值和。

在这里插入图片描述
如图,以结束点在右上角为例,则可以转移到的图形有三种:
1. 1. 1. 可以由上一个结束点也在这个点的相同回环转移,如图1。
2. 2. 2. 可以由往下缩短一格后再加上此点的回环转移,如图2。
3. 3. 3. 可以由一个回环加上一段横行(竖行)转移,如图3。

所以要先用前缀和记录所有的横行和竖行的权值前缀和,以便 3 3 3 的转移。
并且图形是由小图形到大图形进行转移,所以要枚举这个回环的长和宽来进行 D P DP DP

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值