POJ 3666 DP
来源:互联网 发布:okhttp源码解析 编辑:程序博客网 时间:2024/06/16 05:08
给定一个序列,以最小代价将其变成单调不增或单调不减序列,这里的代价看题目公式
DP方程:dp[i][j]=abs(a[i]-b[j])+min(dp[i-1][k]);(k<=j) 前i个位置,结尾用b[j]的最小代价
详细题解:http://blog.csdn.net/wuyanyi/article/details/7255154
#include "stdio.h"#include "string.h"#include "algorithm"using namespace std;int Abs(int a){ if (a<0) return -a; else return a;}int Min(int a,int b){ if (a<b) return a; else return b;}int dp[2010][2010],a[2010],b[2010];int main(){ int n,i,temp,j; while (scanf("%d",&n)!=EOF) { for (i=1;i<=n;i++) { scanf("%d",&a[i]); b[i]=a[i]; } sort(b+1,b+1+n); for (i=1;i<=n;i++) dp[i][1]=Abs(a[1]-b[i]); for (i=2;i<=n;i++) { dp[i][1]=dp[i-1][1]+Abs(a[i]-b[1]); temp=dp[i-1][1]; for (j=2;j<=n;j++) { temp=Min(temp,dp[i-1][j]); dp[i][j]=temp+Abs(a[i]-b[j]); } } temp=dp[n][1]; for (i=2;i<=n;i++) temp=Min(temp,dp[n][i]); printf("%d\n",temp); } return 0;}
0 0
- POJ 3666 DP
- poj 3666 线性dp
- POJ 3666 DP
- [DP] POJ 3666
- poj dp
- 【dp】POJ
- 【dp】POJ
- [DP] POJ
- [DP] POJ
- [DP] POJ
- 【dp】POJ
- POJ 3666 Making the Grade [DP]
- POJ 3666 Making the Grade (dp)
- 【POJ 3666】Making the Grade(简单DP)
- poj 3666 数组整单调 dp
- poj 3666 Making the Grade 【dp】
- POJ 3666--Making the Grade(dp)
- POJ - 3666 Making the Grade(DP)
- 提高第17课时,自测
- Linux命令行,经常用到的小结
- 异常整理
- 线性代数导论2——矩阵消元
- PCM数据格式
- POJ 3666 DP
- JS动态添加移除事件 和 获取Event (兼容IE和Firefox)
- struct ifreq学习和实例
- Oracle EBS订单的流程(Order->AR)
- openwrt 编程器固件制作方法
- Linux 网络配置
- ios 导航栏透明及颜色动态变化
- hdu 1166 敌兵布阵(线段树入门第一题)
- 移动硬盘分区小妙招