传送门

显然 $dp$,首先设 $f[i][j]$ 表示当前考虑到第 $i$ 个电线杆,高度为 $j$ 时的最小代价

那么有转移 $f[i][j]=f[i-1][k]+cost+C(j-k)$,其中 $j>=k$,$cost$ 为把电线杆 $i$ 增高到 $j$ 的代价,$i,j$ 固定时为常数

对于 $i,j$ 的最优转移 $k'$,$i,j+1$ 时小于 $j$ 的所有转移代价同时增加 $C$,所有对于 $k<j$ 的位置只有 $k'$ 有机会贡献

当 $k>j$ 时也同理,动态维护即可

其实直接维护前缀 $f[i][j]-Ck$ 最小值会好写很多...

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=1e5+,M=;
const ll INF=1e18;
int n,C,h[N],H;
ll f[][M],ans=INF;
inline ll calc(int i,int j,int k) { return f[(i&)^][k]+(j-h[i])*(j-h[i])+C*abs(j-k); }
int main()
{
n=read(),C=read();
for(int i=;i<=n;i++) h[i]=read(),H=max(H,h[i]);
for(int i=h[];i<=H;i++) f[][i]=(i-h[])*(i-h[]);
for(int i=;i<=n;i++)
{
int pre=h[i-],p=i&;
for(int j=;j<=H;j++) f[p][j]=INF;
for(int k=pre+;k<h[i];k++) if(calc(i,h[i],pre)>calc(i,h[i],k)) pre=k;
for(int j=max(h[i],h[i-]);j<=H;j++)
{
if(calc(i,j,pre)>calc(i,j,j)) pre=j;
f[p][j]=calc(i,j,pre);
}
pre=H;
for(int j=H-;j>=h[i];j--)
{
if(j+>=h[i-] && calc(i,j,pre)>calc(i,j,j+)) pre=j+;
f[p][j]=min(f[p][j],calc(i,j,pre));
}
}
for(int i=h[n];i<=H;i++) ans=min(ans,f[n&][i]);
printf("%lld\n",ans);
return ;
}

最新文章

  1. Keil&gt; 编译器特有的功能 &gt; 关键字和运算符 &gt; __weak
  2. php字符串常用函数
  3. POJ2524 Ubiquitous Religions(并查集)
  4. keepalived + nginx
  5. 8天玩转并行开发——第八天 用VS性能向导解剖你的程序
  6. malloc内存分配与free内存释放的原理
  7. tcp连接以及网络I/O的几个问题
  8. Java中File的使用
  9. Python 30分钟入门指南
  10. Cocos Creator 构建发布... APP ABI(选项)
  11. ubuntu配置neuwork网络
  12. IE环境表单提交不跳转页面
  13. WPF中,输入完密码回车提交 ,回车触发按钮点击事件
  14. HyperLogLog 算法的原理讲解以及 Redis 是如何应用它的
  15. Docker备忘录
  16. [Unity插件]Lua行为树(十二):行为树管理
  17. P3959 宝藏
  18. CentOS yum时出现&quot;Could not retrieve mirrorlist&quot;
  19. Apache性能优化总结
  20. 解决win10休眠后无法唤醒

热门文章

  1. 多数据源(sql server 2008,二个数据库不ip,)
  2. java构造方法和重写equals
  3. Kohana Minion cli 学习
  4. CF 480 B Long Jumps (map标记)
  5. Vue包的下载
  6. 嵌入式Linux之gdb配置和使用
  7. 2014 ECML: Covariate-correlated lasso for feature selection (ccLasso)
  8. 用Vue来实现音乐播放器(十八):右侧快速入口点击高亮
  9. curl发json
  10. 测开之路九十九:js函数、事件、window窗体对象