codeforces 713C dp+离散
来源:互联网 发布:php 互换数组里面的值 编辑:程序博客网 时间:2024/05/01 06:56
题意:给你一个整数序列,可以给一个数+1或-1 代价都是1 问最少操作多少次使序列严格递增。
题解:dp+离散 类似于poj3666 只不过原序列a[i]=a[i]-i
然而感觉最终每个数都是原序列中的数,这个结论感觉好魔幻。。。。。。
然后YY了一个比较有道理的推论方法:假如当前序列到i都是递增的 在第i~j个数不再递增,那么第i~j最优整合方案就是向i~j的中位数靠拢,由于中位数一定是原数列中的一个数,那么最优方案中每个数都在原数列中出现过。
#include <cstdio>#include <algorithm>#include <iostream>using namespace std;int a[3100],b[3100];long long dp[3100][3100];int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]),a[i]-=i,b[i]=a[i]; sort(b+1,b+1+n); for(int i=1;i<=n;i++) { long long mn=dp[i-1][1]; for(int j=1;j<=n;j++) { mn=min(mn,dp[i-1][j]); dp[i][j]=mn+abs(a[i]-b[j]); } } long long ans=dp[n][1]; for(int i=2;i<=n;i++) ans=min(ans,dp[n][i]); cout<<ans; return 0;}
0 0
- codeforces 713C dp+离散
- Codeforces 567C Geometric Progression (离散 + DP)
- Codeforces 713C Sonya and Problem Wihtout a Legend(离散化dp)
- codeforces 156C Almost Arithmetical Progression (离散化+dp)
- codeforces 713C(Round #371 Div2 E) Sonya and Problem Wihtout a Legend Dp + 前缀 +离散化
- DP方程+离散化——Codeforces Round #371 (Div. 1) C
- 【数位DP+离散化】Beautiful numbers CodeForces
- POJ 3666 + codeforces 713C (dp)
- Codeforces 138C(区间更新+离散化)
- CodeForces 670C Cinema(排序,离散化)
- CodeForces 467C DP
- Codeforces 156C (DP)
- codeforces 155C dp
- CodeForces 13C DP
- codeforces 431C DP
- CodeForces 687C【DP】
- Codeforces 706c dp
- CodeForces 13C【DP】
- Intent和PendingIntent的区别
- Android viewpagerfragment,FragmentPagerAdapter使用demo
- 单块架构应用及其面临的挑战(读书笔记)
- Unity 粒子特效预览工具
- Deep Learning 初探(四)
- codeforces 713C dp+离散
- cin、cout、>>、get()以及getline()
- CodeForces 205B
- IT知识图谱(只是从CSDN中把图片,一个个下载了)
- 洛谷 2115
- KafKa数据存储与数据一致性保证
- Java回顾之I/O
- bzoj 1531: [POI2005]Bank notes 单调队列优化多重背包
- 删除vector中内存