USACO Making the Grade
洛谷 P2893 [USACO08FEB]修路Making the Grade
https://www.luogu.org/problemnew/show/P2893
JDOJ 2566: USACO 2008 Feb Gold 1.Making the Grade
https://neooj.com:8082/oldoj/problem.php?id=2566
POJ Making the Grade
http://poj.org/problem?id=3666
Description
A straight dirt road connects two fields on FJ's farm, but it changes
elevation more than FJ would like. His cows do not mind climbing
up or down a single slope, but they are not fond of an alternating
succession of hills and valleys. FJ would like to add and remove
dirt from the road so that it becomes one monotonic slope (either
sloping up or down).
You are given N integers A_1, . . . , A_N (1 <= N <= 2,000) describing
the elevation (0 <= A_i <= 1,000,000,000) at each of N equally-spaced
positions along the road, starting at the first field and ending
at the other. FJ would like to adjust these elevations to a new
sequence B_1, . . . , B_N that is either nonincreasing or nondecreasing.
Since it costs the same amount of money to add or remove dirt at
any position along the road, the total cost of modifying the road
is
|A_1 - B_1| + |A_2 - B_2| + ... + |A_N - B_N|
Please compute the minimum cost of grading his road so it becomes
a continuous slope. FJ happily informs you that signed 32-bit
integers can certainly be used to compute the answer.
Input
* Line 1: A single integer: N
* Lines 2..N+1: Line i+1 contains a single integer elevation: A_i
Output
* Line 1: A single integer that is the minimum cost for FJ to grade
his dirt road so it becomes nonincreasing or nondecreasing in
elevation.
Sample Input
1
3
2
4
5
3
9
Sample Output
HINT
OUTPUT DETAILS:
By changing the first 3 to 2 and the second 3 to 5 for a total cost of
|2-3|+|5-3| = 3 we get the nondecreasing sequence 1,2,2,4,5,5,9.
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,ans,a[],t[],b[];
int f[][],minf[][];
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
t[i]=a[i];
}
sort(t+,t+n+);
int now=-;
for(int i=;i<=n;i++)
if(now!=t[i])
b[++m]=t[i],now=t[i];
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
f[i][j]=minf[i-][j]+abs(a[i]-b[j]);
if(j==)
minf[i][j]=f[i][j];
else
minf[i][j]=min(minf[i][j-],f[i][j]);
}
ans=minf[n][m];
memset(f,,sizeof(f));
memset(minf,,sizeof(minf));
sort(b+,b+m+,cmp);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
f[i][j]=minf[i-][j]+abs(a[i]-b[j]);
if(j==)
minf[i][j]=f[i][j];
else
minf[i][j]=min(minf[i][j-],f[i][j]);
}
ans=min(ans,minf[n][m]);
printf("%d",ans);
return ;
}
USACO Making the Grade的更多相关文章
- POJ3666Making the Grade[DP 离散化 LIS相关]
Making the Grade Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6445 Accepted: 2994 ...
- A-Making the Grade(POJ 3666)
Making the Grade Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4656 Accepted: 2206 ...
- poj 3666 Making the Grade(dp)
Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...
- bzoj usaco 金组水题题解(1)
UPD:我真不是想骗访问量TAT..一开始没注意总长度写着写着网页崩了王仓(其实中午的时候就时常开始卡了= =)....损失了2h(幸好长一点的都单独开了一篇)....吓得赶紧分成两坨....TAT. ...
- POJ 3666 Making the Grade (动态规划)
Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...
- poj3666 Making the grade【线性dp】
Making the Grade Time Limit: 1000MS Memory Limit: 65536K Total Submissions:10187 Accepted: 4724 ...
- POJ 3666 Making the Grade(数列变成非降序/非升序数组的最小代价,dp)
传送门: http://poj.org/problem?id=3666 Making the Grade Time Limit: 1000MS Memory Limit: 65536K Total ...
- [poj 3666] Making the Grade (离散化 线性dp)
今天的第一题(/ω\)! Description A straight dirt road connects two fields on FJ's farm, but it changes eleva ...
- USACO . Your Ride Is Here
Your Ride Is Here It is a well-known fact that behind every good comet is a UFO. These UFOs often co ...
随机推荐
- IPv6地址编址
- vue 路由跳转到本页面,ts 监听路由变化
@Watch('$route') routechange(to: any, from: any) { //参数不相等 if (to.query.name!=from.query.name) { //t ...
- FaaS(函数即服务) + BaaS(后台即服务)
作者 | 黄子毅(紫益) 阿里前端技术专家 导读:前端开发者是最早享受到 “Serverless” 好处的群体,因为浏览器就是一个开箱即用.甚至无需为计算付费的环境!Serverless 把前端开发体 ...
- 论文阅读: v-charge项目: 电动车的自动泊车和充电
Abstract AVP服务会缓和电动车现有两个缺点: 有限的行驶范围和很长的充电时间. v-charge用相机和超声波在GPS-denied的区域全自动形式. 这篇paper叙述了下述几方面的优势: ...
- pycharm的安装与破解
一.首先去Pycharm官网,或者直接输入网址:http://www.jetbrains.com/pycharm/download/#section=windows,下载PyCharm安装包,根据自己 ...
- 使用selenium爬虫抓取数据
写在前面 本来这篇文章该几个月前写的,后来忙着忙着就给忘记了.ps:事多有时候反倒会耽误事.几个月前,记得群里一朋友说想用selenium去爬数据,关于爬数据,一般是模拟访问某些固定网站,将自己关注的 ...
- RestTemplate的三种请求方式
转载 https://blog.csdn.net/qq_36364521/article/details/84203133
- CentOS7/Ubuntu18系统时间同步ntp(转载)
转自 https://blog.csdn.net/u010226454/article/details/80896959 ---centos7.2上搭建ntp服务器,并实现时间同步 对于容器编排系统 ...
- selenium简单使用
简介 Selenium是一个用于Web应用程序测试的工具.Selenium可以直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fi ...
- npm 查看全局安装模块
方法一: npm list -g --depth 0 方法二: 输入npm root -g 得到全局node_modules的地址 在任意文件夹输入此地址,便可查看所安模块 https://blog ...