【USACO OPEN 10】hop

这是一篇关于USACO公开赛题目的解析,主要讨论如何找到满足特定条件的最大权重路径。题目要求从位置0开始,路径满足相邻位置差不超过m,且路径必须回溯到0,同时在回程中每个点的后继点必须被选中。通过动态规划(DP)解决此问题,使用单调队列来优化。文章中提到了一些细节处理,如添加辅助点和特判m=1的情况。
摘要由CSDN通过智能技术生成

题目大意

有一个序列 {An} ,初始站在位置 0 上,求一条路径满足以下条件,并且经过的点权值和最大。(记Xk为第 k 步所在的位置,共走了p步)。

  • |XkXk+1|<=m,1<=k<p
  • X1=0<X2<...<Xk>Xk+1>Xk+2>...>Xp=0
  • 对于任意 k<i<p ,要求 (Xk+1){X1..k}

n<=105,m<=n


分析

显然是 DP ,然而要想写对不是很简单。
fi i 号位是当前回程上的最后一个点,由于题目要求回程选的点的后继一定要选中,而两个回程点之间可以任意选正权值的点,不难列出方程,记sumi表示 i 之前的所有正权和。

fi=maxi2j=ikfjsumj+1+sumi1+vi+vi+1

用单调队列维护就好了。


各种各样奇怪的细节

  • 要在开头加入两个零权辅助点方便处理。
  • 需要特殊处理 m=1 的情况
  • 对于 f1 的值需要特判
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值