http://vjudge.net/problem/POJ-3666

题目是dp 题目;   简单dp 离散一下就好.

我们先来讲一讲不离散的,简单的懂了,其他的也很容易. dp[i] 代表这个数列以i 结尾的最小花费;  假设现在要求 前n个数组成的数列,那么dp[i]= 前 n-1 的 min(dp[i]~dp[0])+ (当前这个数-i);

#include <cstdio>
#include <cstring>
#include <cctype>
#include <cmath>
#include <set>
#include <map>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <time.h> using namespace std;
typedef long long LL;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
const int MAXSIZE=1e6+5;
const double eps=0.0000000001;
void fre()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
}
#define memst(a,b) memset(a,b,sizeof(a))
#define fr(i,a,n) for(int i=a;i<n;i++) const int MAXN=2010;
int a[MAXN],index[MAXN];
int dp[MAXN],temp[MAXN];
bool cmp(int x,int y)
{
return a[x]<a[y];
}
int solve(int n)
{
for(int i=0;i<n;i++) temp[i]=abs(a[0]-a[index[i]]);
for(int k=0;k<n-1;k++)
{
int minnum=INF;
for(int i=0;i<n;i++)
{
minnum=min(minnum,temp[i]);
dp[i]=abs(a[k+1]-a[index[i]])+minnum;
}
for(int i=0;i<n;i++) temp[i]=dp[i];
}
int res=INF;
for(int i=0;i<n;i++)
res=min(res,dp[i]);
return res;
}
int main(int argc,char *argv[])
{
int n;
while(scanf("%d",&n)+1)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]),index[i]=i;
sort(index,index+n,cmp);
printf("%d\n",solve(n));
}
return 0;
} /**************************************************/
/** Copyright Notice **/
/** writer: wurong **/
/** school: nyist **/
/** blog : http://blog.csdn.net/wr_technology **/
/**************************************************/

最新文章

  1. SQL 性能调优中可参考的几类Lock Wait
  2. BZOJ 1797: [Ahoi2009]Mincut 最小割
  3. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
  4. Python学习笔记——文件写入和读取
  5. 网页中的JavaScript
  6. salt-master 的配置文件详解
  7. POJ 1269 (直线相交) Intersecting Lines
  8. android 权限总结
  9. ECMA 6 记入
  10. office2007序列号/密钥
  11. codeforces 455C 并查集
  12. HBase数据存储格式
  13. CSS3:三个矩形,一个宽200px,其余宽相等且自适应满铺
  14. angular 实现自定义样式下拉菜单
  15. APP网络测试要点和弱网模拟
  16. su和sudo的区别
  17. Buy or Build(UVa1151)
  18. c++常见变量的极值
  19. Linux的php-fpm优化心得-php-fpm进程占用内存大和不释放内存问题(转)
  20. SpringMVC运行流称总结(DispatcherServlet-doDispatch)

热门文章

  1. 跟开涛学SpringMVC(4.1):Controller接口控制器详解(1)
  2. [反汇编练习] 160个CrackMe之035
  3. Chrome内核保存为mhtml(单网页)
  4. android RecycleView复杂多条目的布局
  5. Lightoj 1088 - Points in Segments 【二分】
  6. 如何重建一个损坏的调用堆栈(callstack)
  7. GTK入门学习:布局练习之计算器
  8. javascript 高级编程系列 - 函数
  9. 排序&amp;匿名函数
  10. Process Autocad by python