[CodeForces 677D] Vanya and Treasure (二维树状数组+静态前缀最小值)

CodeForces - 677D

一个N*M的网格图,每个格子有一把钥匙,上面一个权值
要求从 1到 P按顺序收集钥匙,保证 P只有一把
问收集全部钥匙的最短距离是多少


首先 dp[x][y] 表示收集 (x,y) 的最小距离
然后这题不能暴力,复杂度是 O(N4)
官方题解的 bfs复杂度没看懂,所以退而求其次,
实现了一下comment的二维树状数组

树状数组维护二维静态前缀最小值,感觉很tricky
其实就是利用了树状数组的结构,然后树状数组只能维护前缀,
这题正好只需要知道前缀最小就行了
对于一个点 (x0,y0) ,我们需要直到它左上区域,右上区域,左下区域,右下区域对他的最优值
左上: dp[x][y]+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值