被概率冲昏的头脑~~~

我们先将样例在图上画下来:

会发现,最大收益是:

看出什么了吗?

这不就是凸包吗?

跑一遍凸包就好了呀,这些点中,如果i号点是凸包上的点,那么它的ans就是自己(第二个点),不然的话,从上图来看,i的ans肯定和他相邻的两个是凸包边界的点有关(0节点和2节点),那么怎么求这个ans呢?(第x号点为横坐标为x的点)

实际上我也不知道就是个期望公式啊!

l[i]记录i号点往左走第一个为凸包边界的点(如果i为1号,那么l[i]为0,特殊的,如果i为2号,那么l[i]就是本身),r[i]同理。当l[x]==r[x]时,x时边界。

就是这个方程: (f[l[i]])*(r[i]-i)+f[r[i]]*(i-l[i])))/(r[i]-l[i]);

基础的期望方程,在此不再赘述(实际上是不会证)

关于凸包,在这贴一波yyb大神的博客:传送门戳我QwQ(顺便膜一波yyb大神%%%)

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define RI register int
#define F 100000
using namespace std;
const int NS=1e5+5;
ll f[NS],l[NS],r[NS],hep[NS];
//f如题,l[i]/r[i]如上文,hep为凸包
template <typename _Tp> inline void IN(_Tp&x){
char ch;bool flag=0;x=0;
while(ch=getchar(),!isdigit(ch))if(ch=='-')flag=1;
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
if(flag)x=-x;
}
int main(){
int n,top=0;IN(n);hep[++top]=0;//注意先加入0!
for(int i=1;i<=n;++i)IN(f[i]);
for(int i=1;i<=n+1;++i){//凸包
while(top>=2){
int a=hep[top],b=hep[top-1];
if(((f[a]-f[b])*(i-a))<((f[i]-f[a])*(a-b)))--top;
else break;
}hep[++top]=i;
}
for(int i=1;i<top;++i){
//中间的节点的l,r值都为hep[i]/hep[i+1]
for(int j=hep[i]+1;j<hep[i+1];++j){
l[j]=hep[i],r[j]=hep[i+1];
}l[hep[i]]=hep[i],r[hep[i]]=hep[i];
}
for(int i=1;i<=n;++i){
ll ans=0;//记得LL!
if(l[i]==r[i])ans=f[i]*F;//为边界,直接跳下最优
else ans=(F*(f[l[i]]*(r[i]-i)+f[r[i]]*(i-l[i])))/(r[i]-l[i]);//否则用方程算
printf("%lld\n",ans);
}return 0;
}

最新文章

  1. SAP HANA专题分析目录
  2. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON SetGray
  3. UVALive - 6955 Finding Lines 随机算法
  4. 插入排序 --- 排序算法 --- 算法 --- java
  5. 懂说话,让冲突、尴尬时刻都bye-bye
  6. Linux 源码编译Python 3.6
  7. 2019/04/06 BJ省选模拟DAY1
  8. Codeforces Round #308 (Div. 2)
  9. C#-结构体(十)
  10. flask-appbuilder +echarts 展示数据笔记
  11. 转:JSON 获取属性值的方法
  12. [转]小程序web-view组件
  13. JSP求和计算
  14. 20145329 《网络对抗技术》客户端Adobe阅读器渗透攻击
  15. 关于JqueryCheck选中获取数据
  16. sql中Union和union all的使用
  17. http协议--文章一
  18. hadoop常见错误解决方法
  19. Maven远程发布项目到tomcat
  20. 支持向量机SVM 简要推导过程

热门文章

  1. SpringMVC上传文件后返回文件服务器地址路径
  2. 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值
  3. tflearn 保存模型重新训练
  4. 【USACO 2017Feb】 Why Did the Cow Cross the Road
  5. python 统计文件的个数
  6. Feature分支(转载)
  7. E20180120-hm
  8. bzoj [Usaco2010 Hol]cowpol 奶牛政坛【树链剖分】
  9. bzoj 1574: [Usaco2009 Jan]地震损坏Damage【dfs】
  10. CentOS 6.5克隆后eth1与eth0的问题