1 条题解
-
0
自动搬运
来自洛谷,原作者为

Mirach
诶这里还可以填东西?搬运于
2025-08-24 22:07:43,当前版本为作者最后更新于2019-01-09 19:21:54,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
(翻了翻其他的题解,觉得它们没讲清楚为什么一定选择两个点作为决策结束点)
我相信很多通过了这道题的人都没有弄清楚这个策略的正确性Problem
题意概要:给定一个长为的序列,可以选择以的概率进行左右移动,也可以结束并得到当前位置上的收益,求从每个位置开始时使用最优策略的最大期望收益是多少
Solution
关键在于需要考虑当前是选择移动还是直接结束。一个很明了的观点:如果当前移动后的收益期望比当前位置的收益大,那么会选择移动;否则选择直接停止。直接停止的贡献已经知道,那么要求的就是当前点选择移动操作后的收益期望
有一个结论:在长度为的数轴上的位置处,每次进行左右移动(左右概率都为),若到达或即停止,则到达停止的概率为,到达停止的概率为
关于这个结论的证明,考虑设在 开始,到停止的概率为,由题可得,不难发现这个方程是等差数列的描述,又由可得,即可得到上面的结论
这个结论的用处后面再说
假设我们已知一些节点移动的期望收益比当前点停止的收益低,即如果进行随机游走,一旦到达这些点,一个极端聪明的人是绝不会继续移动的,设这些点为停止点
会发现,如果从 出发进行移动,那么移动的期望收益一定是由 往前数第一个停止点和往后数第一个停止点贡献的
不妨设为 和 ,由我们之前的结论可以得到到达 停止的概率为,到达 停止的概率为,由期望公式可得从 出发进行随机移动的期望收益为 $E=v_a\cdot \frac {b-i}{b-a}+v_b\cdot \frac {i-a}{b-a}$,比划一下会发现这是满足物理里的杠杆模型的
现在我们得到了一个优秀的做法,就是对于每个点,找到其前后的第一个停止点,得到其移动的期望收益然后与自己的停止收益取最大值
但如何求出所有的停止点呢?
进一步,画个图可知,设 坐标为 , 坐标为 ,则从 出发进行移动的期望收益是 所连线段与直线的交点纵坐标,所有的停止点会满足在时,要比这条线段要高
不难发现若将所有停止点 画出来一定成为一个凸包,反证法证明:若存在一个停止点在凸包内,则这个点的移动期望比停止期望大,也就是说这并不是一个停止点,与假设相悖,得证
所以为了得到所有的停止点,只要对所有的求个凸包即可
(要看图的兄弟可以看楼下的~~,逃~~)
证明真有趣Code
#include <bits/stdc++.h> typedef long long ll; inline void read(ll&x){ char c11=getchar();x=0;while(!isdigit(c11))c11=getchar(); while(isdigit(c11))x=x*10+c11-'0',c11=getchar(); } const int N=101000,bs=1e5; int n,tp; struct vec{ int x;ll y; inline vec(){} inline vec(const int&X,const ll&Y):x(X),y(Y){} friend inline vec operator - (const vec&A,const vec&B) {return vec(A.x-B.x,A.y-B.y);} friend inline ll operator * (const vec&A,const vec&B) {return A.x*B.y-A.y*B.x;} }p,st[N]; void push(vec p){ while(tp&&(p-st[tp])*(st[tp]-st[tp-1])<=0)--tp; st[++tp]=p; } int main(){ scanf("%d",&n);vec p; for(int i=1;i<=n;++i)p.x=i,read(p.y),p.y*=bs,push(p); push(vec(n+1,0)); for(int i=1,j=0;i<=n;++i){ while(j<tp&&st[j].x<i)++j; if(st[j].x==i)printf("%lld\n",st[j].y); else printf("%lld\n",((st[j].x-i)*st[j-1].y+(i-st[j-1].x)*st[j].y)/(st[j].x-st[j-1].x)); }return 0; }
- 1
信息
- ID
- 4134
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者