Making the Grade 路面修整 bzoj-1592

题目大意:给你n段路,每段路有一个高度h[i],将h[i]修改成h[i]$\pm\delta$的代价为$\delta$,求将这n段路修成非严格单调的最小代价。

注释:1$\le$n$\le$2000,$1\le A_i\le 10^9$。

想法:我们先考虑单调递增。显然,我们期望所有数都尽量靠近原来的数。a数组是原来的高度数组,b数组是按照a的排序数组

  状态:dp[i][j]表示前i段路,且第j段路变成了b[j]的方案数。

  转移:f[i][j]=min(f[i-1][k])+abs(a[i]-b[j])(1<=k<=j)。

  具体地,这个$n^3$的dp的min我们可以在转移的过程中直接处理出,所以是$n^2$的。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
int n,m,mindp[2009][2009],dp[2009][2009],a[2009],b[2009],t[2009],ans;
void original()
{
for (int i=0;i<=n;i++)
for (int j=0;j<=m;j++)
mindp[i][j]=dp[i][j]=0;
}
void dispose()
{
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
dp[i][j]=mindp[i-1][j]+abs(a[i]-b[j]);
if (j!=1) mindp[i][j]=min(mindp[i][j-1],dp[i][j]);
else mindp[i][j]=dp[i][j];
}
}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
t[i]=a[i];
}
sort(t+1,t+1+n);
int now=-1;
for(int i=1;i<=n;i++)
if(now!=t[i]) b[++m]=t[i],now=t[i];
original();
dispose();
ans=mindp[n][m];
for(int i=1;i<=m/2;i++) swap(b[i],b[m-i+1]);
original();
dispose();
ans=min(ans,mindp[n][m]);
printf("%d\n",ans);
return 0;
}

小结:dp总是神奇的qwq

最新文章

  1. ActiveMQ入门
  2. PL/SQL Developer记住用户名密码
  3. csdn 泄露用户密码害人不浅啊。
  4. RAID-4与模2和
  5. 一、javaSE总结
  6. # HTML &amp;&amp; CSS 学习笔记
  7. Codevs 1078 ==Poj 1258 Agri-Net
  8. iOS开发中GCD在多线程方面的理解
  9. Java基础知识强化之集合框架笔记66:Map集合面试题之HashMap和Hashtable区别(重要)
  10. Linux启动遇到的问题
  11. phpMyAdmin import.php 安全漏洞
  12. excel数据导入到sqlserver中---------工作笔记
  13. MVC自我学起之MVCMusic开发中遇到问题:musicstore edit方法出错的原因和解决方法
  14. &lt;Win32_12&gt;程序员求爱的创意程序——升级版^_^
  15. Initialising Memories
  16. win下安装Redmine常见错误解决方案
  17. 关于云Linux部署tomcat服务器(Maven的多模块war包)
  18. BZOJ_4006_[JLOI2015]管道连接_斯坦纳树
  19. zookeeper-3.5.4-beta安装
  20. Tmux的快捷键

热门文章

  1. PCB 规则引擎之脚本语言JavaScript应用评测
  2. Rails&#160;mysql数据库连接的小坑
  3. 洛谷P1387最大正方形(dp,前缀和)
  4. codevs1026商务旅行
  5. P3309 [SDOI2014]向量集
  6. [App Store Connect帮助]一、 App Store Connect 使用入门(1)App Store Connect 工作流程
  7. Akka源码分析-故障恢复
  8. url参数为数组
  9. HTML--使用mailto在网页中链接Email地址
  10. [ USACO 2018 OPEN ] Out of Sorts (Gold)