原创:
http://www.cnblogs.com/proverbs/archive/2012/10/03/2711151.html
超高仿:
http://blog.csdn.net/mars_ch/article/details/53020127

高仿:

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 105
#define mem(x) memset(x,0x1f,sizeof(x))
int cases,n,m,p,a[N],b[N],c[N],ans;
int ab[N][N],ac[N][N],bc[N][N];
int main(){scanf("%d",&cases);while(cases--){mem(ab),mem(ac),mem(bc),ans=0x3fffffff;scanf("%d%d%d",&n,&m,&p);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++)scanf("%d",&b[i]);for(int i=1;i<=p;i++)scanf("%d",&c[i]);ab[n+1][0]=ac[0][p+1]=bc[m+1][0]=0;for(int i=n;i;i--)for(int j=1;j<=m;j++)ab[i][j]=min(ab[i+1][j],min(ab[i+1][j-1],ab[i][j-1]))+abs(a[i]-b[j]);for(int i=1;i<=n;i++)for(int j=p;j;j--)ac[i][j]=min(ac[i-1][j],min(ac[i-1][j+1],ac[i][j+1]))+abs(a[i]-c[j]);for(int i=m;i;i--)for(int j=1;j<=p;j++)bc[i][j]=min(bc[i+1][j-1],min(bc[i][j-1],bc[i+1][j]))+abs(b[i]-c[j]);for(int i=0;i<=n+1;i++)for(int j=0;j<=m+1;j++)for(int k=0;k<=p+1;k++){ans=min(ans,ab[i][j]+bc[j][k]+ac[i][k]);ans=min(ans,ab[i+1][j]+bc[j][k]+ac[i][k]);ans=min(ans,ab[i][j]+bc[j+1][k]+ac[i][k]);ans=min(ans,ab[i][j]+bc[j][k]+ac[i][k+1]);ans=min(ans,ab[i][j]+bc[j+1][k]+ac[i][k+1]);ans=min(ans,ab[i+1][j]+bc[j][k]+ac[i][k+1]);ans=min(ans,ab[i+1][j]+bc[j+1][k]+ac[i][k]);ans=min(ans,ab[i+1][j]+bc[j+1][k]+ac[i][k+1]);}printf("%d\n",ans);}
}

POJ 1682 DP相关推荐

  1. POJ 3017 DP + 单调队列 + 堆

    题意:给你一个长度为n的数列,你需要把这个数列分成几段,每段的和不超过m,问各段的最大值之和的最小值是多少? 思路:dp方程如下:设dp[i]为把前i个数分成合法的若干段最大值的最小值是多少.dp转移 ...

  2. POJ 1159 (DP)

    题目:http://poj.org/problem?id=1159 思路: 找出原串的最长回文子串,当然这里说的回文子串可以不连续.用原串的长度减去最长回文子串的长度即可得出结果. 设原串a[5001 ...

  3. POJ 1037 DP

    题目链接: http://poj.org/problem?id=1037 分析: 很有分量的一道DP题!!! (参考于:http://blog.csdn.net/sj13051180/article/ ...

  4. POJ 1661 DP

    Help Jimmy Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11071   Accepted: 3607 Descr ...

  5. POJ 3666 dp

    题意 传送门 POJ 3666 基本思路是对 N 个位置枚举所有可能高度,并 dp 求最大值.可能高度取 N 个位置的高度即可,排序以方便顺序 dp.对于升序的情况 dp[i][j]=max{dp[i ...

  6. POJ 3666(DP)

    题目链接:http://poj.org/problem?id=3666 题目大意:给一个串,要求修改最少使得串满足非递增或非递减 题目思路:刚开始没想到,后来经学长提醒如果串里的数字变1000可以怎么 ...

  7. POJ 3257 DP

    题意: 思路: 用vector存上本出发点能到的地方&成本&有趣指数(用结构体保存) 然后DP就好了 f[i][j]表示到了i 成本为j的有趣指数最大是多少 f[vec[i][k].e ...

  8. poj 2392 dp 不是很懂哎!!!Space Elevator

    大意:有K种block去建塔,每种每个都有一个高度H,用了当前的block塔的高度不能超出a,和每种的数量.求塔最高能建多高. 分析:这题就是一个多重背包,但有一点变动,必须先以a从小到大排序,因为如 ...

  9. poj 2346(DP)

     题意:n位数,满足前n/2个数字之和同后n/2个数字之和相同的数一共有多少个? 解题思路:dp[i][j]表示前i个数的和为j时,有多少个: 递推关系:dp[i][j] += dp[i-1][k ...

  10. POJ 2353 DP

    双向DP+记录路径. // by SiriusRen #include <stack> #include <cstdio> #include <cstring> u ...

最新文章

  1. 告别渣画质,视频会议带宽降90%,英伟达公开Maxine服务背后重要技术
  2. 国赛来咯,全国大学生智能汽车竞赛百度赛道正式开启
  3. 微信小程序Java登录流程(ssm实现具体功能和问题解决方案)
  4. 不同测试阶段,不同测试类型的区别于联系
  5. MySQL之单表查询、多表查询(一)
  6. sql2008安装包_数据库SQL2008下载与安装图文详解
  7. 2014蓝桥杯-B-省赛-五-圆周率
  8. 股权证明pos记账权是根据不同节点_中币(ZB)说真的,区块链第四期:关于ETH2.0,你需要了解的——PoS...
  9. 快捷操作之争【原创】
  10. 基于rhel7.2的mysql5.7.13安装与配置
  11. Linux 任务计划、周期性任务计划
  12. 浪潮存储进逼国际一线厂商
  13. 数据集:mnist手写数据集
  14. android 反编译全套工具
  15. .NET调用新浪微博开放平台接口的代码示例
  16. 云服务器连接手机本地文件在哪里,云服务器如何连接本地文件
  17. Android中显示PDF的问题解决(安卓端使用pdf.js CDN模式)
  18. proxy代理解决跨域问题
  19. Swift5.1 语言指南(二十三) 协议
  20. 解决office因存在32位,无法安装64位的问题

热门文章

  1. 自学Python 57 多线程开发(七)使用 Connection对象和共享对象 Shared
  2. 代码设置textField和textView的border和borderColor
  3. python输入数字变时间_转变大写日期为数字格式
  4. cocos2d-x 移动MM平台SDK接入
  5. iomega ix2 Android,Lenovo Iomega ix2系统安装
  6. 桌面的html快捷消失了,桌面上的IE浏览器不见了解决教程
  7. Python制作关键字云+情感分析图
  8. RX580 显卡gpu总是乱跳 求解,求解答
  9. 理解Spring 容器设计理念
  10. 利润统计函数c语言,C语言计算内部回报率(或名内部收益率)(IRR)