【DP】WYF的游戏

博客介绍了WYF玩游戏的场景,游戏中他从数轴上的整点出发,每次可以向正方向顶到任意位置,根据顶到的点获取分数。由于分数与顶点的关系不单调,传统的斜率优化不再适用。为解决复杂度问题,文章提出了使用二分查找在单调序列中找到满足条件的上界,以此实现类似斜率优化的方法来求解问题。
摘要由CSDN通过智能技术生成

【题目描述】

WYF从小就爱乱顶,但是顶是会造成位移的。
他之前水平有限,每次只能顶出k的位移,也就是从一个整点顶到另一个整点上。
我们现在将之简化到数轴上,即从一个整点可以顶到与自己相隔在k之内的数轴上的整点上。
现在WYF的头变多了,于是他能顶到更远的地方,他能顶到任意整点上。
现在他在玩一个游戏,这个游戏里他只能向正方向顶,同时如果他从i顶到j, 他将得到a[j]×(j?i)的分数。
其中a[j]是j点上的分数,且要求j>i,他最后必须停在n上。

【输入格式】

第一行一个整数n。
第二行有n个整数,其中第i个数表示a[i]。

【输出格式】

输出仅一个整数,表示WYF最多能得到的分数。


f[i]=f[j]+(i-j)*a[i];\\ f[k]+(i-k)*a[i]>f[k2]+(i-k2)*a[i];\\ f[k]+i*a[i]-k*a[i]>f[k2]+i*a[i]-k2*a[i];\\ f[k]-k*a[i]>f[k2]-k2*a[i];\\ f[k]-f[k2]>k*a[i]-k2*a[i];\\ f[k]-f[k2]>a[i]*(k-k2);\\ (f[k]-f[k2])/(k-k2)<a[i];

显然是标准的斜率优化,但因为a[i]不一定,斜率优化不符合单调性

以前被我们扔掉过的东西以后是可能还会有用的,所以我们此时就不能仅仅只用队列,因为如果每次返回去捡起的话,复杂度无法承担<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值