题意:给你一个数列,对于每个数字你都可以++或者−− 
然后花费就是你修改后和原数字的差值,然后问你修改成一个严格递增的,最小花费

思路:很久以前做过一道一模一样的

严格递增很难处理,就转化为非严格递增处理

设a[i]<a[j],i<j

a[j]-a[i]>=j-i

a[j]-j>=a[i]-i

即将a[i]转化为a[i]-i处理

非严格递增情况下最终数列一定是由原先的数组成的,不可能出现某两个原数中间的值

dp[i,j]为第i位,结尾为第j大的数,转化成这样的数列的最小费用

dp[i,j]=min(dp[i-1,k]+abs(a[i]-b[j])) k<=j

第一项用前缀和优化

 const oo=;
var dp,f:array[..,..]of int64;
a,b:array[..]of longint;
n,i,j:longint;
ans:int64; function min(x,y:int64):int64;
begin
if x<y then exit(x);
exit(y);
end; procedure qsort(l,r:longint);
var i,j,t,mid:longint;
begin
i:=l; j:=r; mid:=b[(l+r)>>];
repeat
while mid>b[i] do inc(i);
while mid<b[j] do dec(j);
if i<=j then
begin
t:=b[i]; b[i]:=b[j]; b[j]:=t;
inc(i); dec(j);
end;
until i>j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end; begin
//assign(input,'1.in'); reset(input);
// assign(output,'1.out'); rewrite(output);
readln(n);
for i:= to n do
begin
read(a[i]);
a[i]:=a[i]-i;
end;
b:=a;
qsort(,n);
for i:= to n do
begin
for j:= to n do f[i,j]:=oo;
for j:= to n do
begin
dp[i,j]:=abs(a[i]-b[j])+f[i-,j];
f[i,j]:=min(f[i,j-],dp[i,j]);
end;
end;
ans:=oo;
for i:= to n do ans:=min(ans,dp[n,i]);
writeln(ans);
//close(input);
// close(output);
end.

最新文章

  1. .NetCore MVC中的路由(2)在路由中使用约束
  2. linux终端常用快捷键
  3. 【原创】Android selector选择器无效或无法正常显示的一点研究
  4. 安装.cer证书并将证书从.cer格式转化为.pem格式
  5. [转]安装SharePoint 2013时安装AppFabric失败(错误码:1603)
  6. Apache Commons CLI命令行启动
  7. subplot demo
  8. 微软职位内部推荐-SW Engineer for Skype
  9. CSS弹性盒布局
  10. 1.Oracle数据库概述
  11. ice介绍 z
  12. android Camera使用(一)
  13. oracle 修改表空间存储路径
  14. How can I terminate a thread that has a seperate message loop?
  15. ecshop以幻灯版调用首页主广告显示
  16. J2EE的13个规范之(三) Servlet简单介绍
  17. Spark算子--foreach和foreachPartition
  18. 搭建dnsmasq服务器,局域网内部解析
  19. 【经验随笔】Java程序远程调试定位特定运行环境上出现的问题
  20. balanced binary tree(判断是否是平衡二叉树)

热门文章

  1. vue 报错unknown custom element解决方法
  2. 微信iOS多设备多字体适配方案总结
  3. HDU-1072-Nightmares
  4. Java AES加密解密工具 -- GUI 、在线传输文件
  5. ubuntu下RedisDesktopManager的安装,redis可视化工具
  6. spdlog&amp;rapidjson 使用记录
  7. 配置wamp开发环境之mysql的配置
  8. Linux安装配置***客户端
  9. Python基础(二)——常用内置函数
  10. 七周成为数据分析师06_MySQL