专栏文章

题解:P14508 猜数游戏 guess【背包,最短路】

P14508题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min1vrqj
此快照首次捕获于
2025/12/01 19:12
3 个月前
此快照最后确认于
2025/12/01 19:12
3 个月前
查看原文
考虑第一次获得的有效信息,一定是对于某个 x[1,n)x\in[1,n),得知目标位置在 [1,x][1,x] 还是 (x,n](x,n],发现可以递归到子问题。
于是,设 f(i,0/1)f(i,0/1) 表示:得知目标位置在 [1,i][1,i] 后,当前棋子在 11i+1i+1,的最小答案。
转移有:
f(i,0)minx=1i1{max{f(x,1),f(ix,0)}+w(x)}f(i,1)minx=1i1{max{f(x,0),f(ix,1)}+w(x)}f(i,0)\gets \min_{x=1}^{i-1} \{\max\{f(x,1),f(i-x,0)\}+w(x)\} \\ f(i,1)\gets \min_{x=1}^{i-1} \{\max\{f(x,0),f(i-x,1)\}+w(x)\}
w(x)w(x) 表示:用 mm 种移动方式移动 xx 格的最小消耗。可以用最短路预处理。
分析一下复杂度。目前在 DP 转移中能用到的 w(x)w(x) 的定义域是 O(n)O(n) 的,对于 w(x)w(x) 的某种移动方案,一定可以交换移动顺序(两个方向交替排列),使得每一步距离起点都是 O(n)O(n) 的。因此预处理用到的 w(x)w(x) 的定义域也是 O(n)O(n)
目前复杂度为 O(T(n2+nm))O(T(n^2+nm))。常数略微大一点就过不了了。
V=maxaV=\max a,假设当前问题为 f(i,0)f(i,0),如果棋子往中间移动了 >V>V 的距离,那么在获得这一信息之前,一定存在一个 V\le V 的移动距离已经获得信息了,因此 DP 转移可以写为:
f(i,0)minx=1min{i1,V}{max{f(x,1),f(ix,0)}+w(x)}f(i,1)minx=1min{i1,V}{max{f(x,0),f(ix,1)}+w(x)}f(i,0)\gets \min_{x=1}^{\min\{i-1,V\}} \{\max\{f(x,1),f(i-x,0)\}+w(x)\} \\ f(i,1)\gets \min_{x=1}^{\min\{i-1,V\}} \{\max\{f(x,0),f(i-x,1)\}+w(x)\}
于是 w(x)w(x) 的定义域被缩小到了 O(V)O(V)。总复杂度 O(T(nV+mV))O(T(nV+mV)),分别为 DP 和最短路的复杂度。
然后 ff 状态中的 0/10/1 其实没什么用,可以直接记 f(i)f(i),转移为:
f(i)minx=1min{i1,V}{max{f(x),f(ix)}+w(x)}f(i)\gets \min_{x=1}^{\min\{i-1,V\}} \{\max\{f(x),f(i-x)\}+w(x)\}

评论

0 条评论,欢迎与作者交流。

正在加载评论...