POJ 1682 DP
原创:
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的更多相关文章
- hdu 1513 && 1159 poj Palindrome (dp, 滚动数组, LCS)
题目 以前做过的一道题, 今天又加了一种方法 整理了一下..... 题意:给出一个字符串,问要将这个字符串变成回文串要添加最少几个字符. 方法一: 将该字符串与其反转求一次LCS,然后所求就是n减去 ...
- poj 1080 dp如同LCS问题
题目链接:http://poj.org/problem?id=1080 #include<cstdio> #include<cstring> #include<algor ...
- poj 1609 dp
题目链接:http://poj.org/problem?id=1609 #include <cstdio> #include <cstring> #include <io ...
- POJ 1037 DP
题目链接: http://poj.org/problem?id=1037 分析: 很有分量的一道DP题!!! (参考于:http://blog.csdn.net/sj13051180/article/ ...
- Jury Compromise POJ - 1015 dp (标答有误)背包思想
题意:从 n个人里面找到m个人 每个人有两个值 d p 满足在abs(sum(d)-sum(p)) 最小的前提下sum(d)+sum(p)最大 思路:dp[i][j] i个人中 和 ...
- poj 1485 dp
转自:http://www.cnblogs.com/kuangbin/archive/2011/11/12/2246407.html [题目大意] 一条公路上有n个旅馆,选出其中k个设置仓库,一个仓库 ...
- POJ 3017 DP + 单调队列 + 堆
题意:给你一个长度为n的数列,你需要把这个数列分成几段,每段的和不超过m,问各段的最大值之和的最小值是多少? 思路:dp方程如下:设dp[i]为把前i个数分成合法的若干段最大值的最小值是多少.dp转移 ...
- POJ 1661 DP
Help Jimmy Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11071 Accepted: 3607 Descr ...
- POJ 1160 DP
题目: poj 1160 题意: 给你n个村庄和它的坐标,现在要在其中一些村庄建m个邮局,想要村庄到最近的邮局距离之和最近. 分析: 这道题.很经典的dp dp[i][j]表示建第i个邮局,覆盖到第j ...
随机推荐
- tf.slice()解释
转载:https://www.jianshu.com/p/71e6ef6c121b def slice(input_, begin, size, name=None): 其中“input_”是你输入的 ...
- tree 核心命令参数
常用参数: -a 显示所有文件 包括隐藏文件 -d 只显示目录 -f 显示每个文件的全路径 -i 不显示树枝 常与-f一起搭配 -L 显示的层数 -F 区分哪个文件是目录 [root@ftp:/va ...
- scrapy爬取boss直聘实习生数据
这个..是我最近想找实习单位..结果发现boss上很多实习单位名字就叫‘实习生’.......太不讲究了 == 难怪一直搜不到..咳,其实是我自己水平有限,有些简历根本就投不出去 == 所以就想爬下b ...
- redhat下搭建jdk+tomcat环境
由于redhat自带安装了jdk,我们需要现将其进行卸载 卸载系统自带的jdk版本: 查看自带的jdk: 输入命令:rpm -qa|grep gcj 可能看到如下类似的信息: libgcj-4.1.2 ...
- HTTP——状态码
(转载) 完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b ...
- Linux下库文件的设置 (/usr/bin/ld: cannot find -lxxx 的解决办法)
在软件编译过程中,经常会碰到类似这样的编译错误: /usr/bin/ld: cannot find -lhdf5 这表示找不到库文件 libhdf5.so,若是其它库文件,则是 cannot find ...
- flume 读取kafka 数据
本文介绍flume读取kafka数据的方法 代码: /************************************************************************* ...
- Android 解决TextVIew载入自己定义字体慢的问题
网上非常多自己定义字体样式的代码.都是告诉应该这样做: 在自己定义控件里写,可是这样写有问题,会随着界面里自己定义控件越多.Activity载入速度越慢,太多了easy造成内存泄露问题,由于你没创建一 ...
- leetCode(38):Lowest Common Ancestor of a Binary Search Tree
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...
- 转发真阿当老师的一片文章 受益匪浅 (出处:http://cly84920.blog.163.com/blog/static/24750013320158203575958/)
忽悠程序员做一辈子程序员,以白胡子白头发hacker为目标的人有两种: 1,自己不写程序,但需要有将才为自己打下手的人,这种人往往看他资质和勤奋均平平,却成了你领导.别不服,这种人虽不见得有帅才的能力 ...