[BZOJ1592] [Usaco2008 Feb]Making the Grade 路面修整(DP)
2024-09-30 02:05:45
有个结论,每一个位置修改高度后的数,一定是原来在这个数列中出现过的数
因为最终结果要么不递增要么不递减,
不递增的话,
如果x1 >= x2那么不用动,如果x1 < x2,把x1变成x2的代价最小
不递减同理
输入数组a后,把a数组复制一份放到b中,并将b排序
f[i][j]表示前i个,当前修改为b[j]的最优解
dp的时候前缀和优化一下即可
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 2001
#define abs(x) ((x) < 0 ? -(x) : (x))
#define min(x, y) ((x) < (y) ? (x) : (y)) int n, ans = ~(1 << 31);
int a[N], b[N], f[N][N][2];
//f[i][j]表示前i个数,第i个数为b[j]的最优解
//0表示不下降,1表示不上升 inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
} int main()
{
int i, j, sum;
n = read();
for(i = 1; i <= n; i++) a[i] = b[i] = read();
std::sort(b + 1, b + n + 1);
memset(f, 127, sizeof(f));
memset(f[0], 0, sizeof(f[0]));
for(i = 1; i <= n; i++)
{
sum = ~(1 << 31);
for(j = 1; j <= n; j++)
{
sum = min(sum, f[i - 1][j][0]);
f[i][j][0] = min(f[i][j][0], sum + abs(a[i] - b[j]));
}
sum = ~(1 << 31);
for(j = n; j >= 1; j--)
{
sum = min(sum, f[i - 1][j][1]);
f[i][j][1] = min(f[i][j][1], sum + abs(a[i] - b[j]));
}
}
for(i = 1; i <= n; i++)
ans = min(ans, min(f[n][i][0], f[n][i][1]));
printf("%d\n", ans);
return 0;
}
最新文章
- jQuery 2.0.3 源码分析 Deferred概念
- Net设计模式实例之单例模式( Singleton Pattern)
- 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton
- 懂DOS终于发挥了一点作用:phoenix bios密码破解
- ARM GCC 内嵌汇编手册
- 调用firebug-lite调试ie6
- web service client端调用服务器接口
- 【渗透课程】第三篇-体验http协议的应用
- interface接口
- [HEOI 2016] seq
- RxJava(十一)defer操作符实现代码支持链式调用
- 苹果新的编程语言 Swift 语言进阶(四)--字符串和收集类型
- 2、搭建一个简单的Web项目
- vue中@contextmenu在pc和mac中的区别
- is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface | mongodb在windows和Linux导出出错
- 什么时候layoutSubview会被调用
- UVA-11183 Teen Girl Squad (最小树形图、朱刘算法模板)
- Ubuntu16.04测网速
- linux命令(8):du命令
- git冲突解决的方法
热门文章
- spring 上传附件
- 增加和减少mongodb复制集中的节点
- LightOJ 1422 Halloween Costumes (区间DP,经典)
- 使用python模拟cookie登陆wooyun
- 模板类 vector
- BZOJ1009: [HNOI2008]GT考试 (矩阵快速幂 + DP)
- spring boot 下 dataTable|pagehelper 组合进行分页 筛选 排序
- Java常见对象Object类中的个别方法
- HDU-1217-Arbitrage(SPFA)
- hihoCoder-1097-Prim