BZOJ P3156: 防御准备

来源:互联网 发布:c语言写网络爬虫 编辑:程序博客网 时间:2024/05/21 12:41

刷斜率优化成性

我感觉我已经走火入魔了

下面是代码

#include<cstdio>#include<iostream>using namespace std;long long n,num[1000005];long long f[1000005],q[1000005],h,t;long long M(long long x){return x*x;}double xie(long long k,long long j){  return (2.0*f[j]-2.0*f[k]+M(j)-M(k)+j-k)/2.0/(j-k);}int main(){cin>>n;  for(int i=1;i<=n;i++){  cin>>num[i];}  f[0]=0;h=t=1;q[1]=0;  for(int i=1;i<=n;i++){    while(h<t&&xie(q[h+1],q[h])<=i){    h++;}int j=q[h];     f[i]=f[j]+(i-j)*(i-j-1)/2+num[i];    while(h<t&&xie(q[t],q[t-1])>xie(i,q[t])){    t--;}    q[++t]=i;  }  cout<<f[n]<<endl;  return 0;}/*in:102 3 1 5 4 5 6 3 1 2out:18*/


0 0
原创粉丝点击