CodeForces 13C. Sequence
来源:互联网 发布:道路施工常用数据手册 编辑:程序博客网 时间:2024/05/17 03:35
不会~先转载,后面慢慢看。。
原作者:http://blog.csdn.net/crescent__moon/article/details/43525515
给你n个数,每次操作都可以使某个数加1或者减1,求至少多少次操作使得这n个数是非递减的。非递减定义:
a1 ≤ a2 ≤ ... ≤ aN
要求最少次数,肯定是由原来的数构成的。
dp[i][j]表示前i个数以a[j]为结尾的满足要求的最少的操作,可是题目给的最大数是10^9,二维数组的j元素不可能开这么大,所以需要离散化一下,改成前i个数以第j个数为结尾的满足要求的最少的操作。
dp[i][j]=min(dp[i][j],第i-1个位置前j个数的最小操作+fabs(b[j]-a[i]) b数组是原来输入的a数组排好序且离散化之后的数组
因为b数组是从小到大排好序的,所以在第i个位置时第j个数肯定比i-1个位置的前j个数要大。
最后dp[5000][5000]也不能存下,那么这个二维数组就要滚一下了。
#include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>#define ll __int64using namespace std;const ll inf = 1ll<<62;//inf要取很大ll dp[2][5007],a[5007],b[5007];ll min(ll x,ll y){ return x<y?x:y;}int main(){ ll n; while(scanf("%I64d",&n)!=EOF) { for(int i=1; i<=n; i++) { scanf("%I64d",&a[i]); b[i]=a[i]; } sort(b+1,b+n+1); int tot=unique(b+1,b+n+1)-b-1;//离散化 dp[1][1]=inf; for(int i=1; i<=tot; i++) { dp[1&1][i]=fabs(b[i]-a[1]); dp[2&1][i]=inf; } for(int i=2; i<=n; i++) { ll minn=inf; for(int j=1; j<=tot; j++) { minn=min(minn,dp[(i-1)&1][j]);//取上一个位置中前j颗不同高度的树中花费最小 dp[i&1][j]=min(dp[i&1][j],minn+fabs(b[j]-a[i]));//当前位置等于上一个位置中前j颗树花费最小+这个位置是第j颗树的花费 } for(int j=1; j<=tot; j++)dp[(i+1)&1][j]=inf; } ll ans=inf; for(int i=1; i<=tot; i++)ans=min(ans,dp[n&1][i]); //取最后一个位置是第j颗树是花费最小 printf("%I64d\n",ans); } return 0;}
阅读全文
0 0
- CodeForces 13C Sequence
- Codeforces 13C Sequence
- codeforces 13C. Sequence
- codeforces 13C. Sequence
- CodeForces 13C Sequence
- CodeForces 13C. Sequence
- CodeForces 13C Sequence (DP)
- Codeforces 13C Sequence dp
- Codeforces #13C: Sequence 题解
- codeforces 13C Sequence(排序,DP)
- CodeForces 286C Main Sequence
- Codeforces Beta Round #13, problem: (C) Sequence DP
- CodeForces 13C. Sequence 滚动数组+离散化
- Codeforces 67C. Sequence of Balls DP!
- Codeforces 392C Yet Another Number Sequence
- Codeforces #24 C. Sequence of points
- CodeForces 24C Sequence of points (几何)
- CodeForces 487C Prefix Product Sequence
- 好书推荐《R语言在定量金融中的应用》
- B
- 蓝桥杯 Torry的困惑(基本型)
- redis重启的问题
- Win10使用TensorFlow调用object_detection API
- CodeForces 13C. Sequence
- Linux 文件编程
- linux (Centos)下lua开发环境搭建
- 微信群控系统源码的实现原理,核心源码实现,核心框架。
- SpringBoot系列<二>指定内置tomcat版本
- sublime text3 破解版下载
- HDFS 的工作机制:写操作
- 接口
- JAVA进阶----ThreadPoolExecutor机制