设f[i]为在i放置守卫塔时1~i的最小花费。那么显然f[i]=min(f[j]+(i-j)*(i-j-1)/2)+a[i]。

  显然这是个斜率优化入门题。将不与i、j同时相关的提出,得f[i]=min(f[j]+j*(j+1)/2-ij)+i*(i-1)/2+a[i]。

  套路地,假设j>k且j转移优于k,则f[j]+j*(j+1)/2-ij<f[k]+k*(k+1)/2-ik,(f[j]+j*(j+1)/2-f[k]-k*(k+1)/2)/(j-k)<i。

  维护下凸壳即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1000010
#define ll long long
int n,a[N],q[N];
ll f[N];
long double calc(int j,int k)
{
return (long double)(f[j]+(1ll*j*(j+)>>)-f[k]-(1ll*k*(k+)>>))/(j-k);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj3156.in","r",stdin);
freopen("bzoj3156.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read();
for (int i=;i<=n;i++) a[i]=read();
f[]=;
int head=,tail=;q[]=;
for (int i=;i<=n;i++)
{
while (head<tail&&calc(q[head],q[head+])<i) head++;
f[i]=f[q[head]]+(1ll*q[head]*(q[head]+)>>)-1ll*i*q[head]+(1ll*i*(i-)>>)+a[i];
while (head<tail&&calc(q[tail-],q[tail])>calc(q[tail],i)) tail--;
q[++tail]=i;
}
cout<<f[n];
return ;
}

最新文章

  1. proteus 运行出错,用户名不可使用中文!
  2. 分享php中四种webservice实现的简单架构方法及实例
  3. Java当中的I/O的字符流
  4. Go语言相关图书推荐
  5. android 三种弹出框之一PopupWindow
  6. 在IT学习中的“认识论”
  7. SQL*Net message to client
  8. 关于接口使用getType的方法的问题
  9. 【剑指offer】面试题24:二叉搜索树的后序遍历序列
  10. js函数收藏:获取cookie值
  11. ASP.NET MVC 4.0的Action Filter
  12. python中的嵌套类(内部类调用外部类中的方法函数)
  13. FullScreenFragment Code
  14. Linux 安装配置 Tomcat
  15. django框架配置mysql数据库
  16. Java基础随记-不定时更新
  17. 洛谷P1897电梯里的爱情题解
  18. OpenGL——旋转的六边形(动画)
  19. j解决sparkr中使用某些r的原生函数 发生错误Error: class(objId) == &quot;jobj&quot; is not TRUE的问题
  20. Android-系统解析AndroidManifest

热门文章

  1. Google 日历短信通知没有了
  2. JMeter的__threadGroupName使用注意事项
  3. Java 中的接口
  4. Python字符串符号:双引号/单引号用法注解。
  5. 如何在忘记mysql的登录密码时更改mysql登录的密码(window及linux)
  6. Docker配置
  7. PLSQL面向对象
  8. 【翻译】HOG, Histogram of Oriented Gradients / 方向梯度直方图 介绍
  9. JavaWeb-Servlet-Tomcat
  10. 苏宁笔试:UML类图中的关系