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 ...
随机推荐
- java 模拟ajax上传图片
1.maven 引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime --> &l ...
- 微信小程序 上传图片
效果图 如上,js 如下,在页面循环图片就可以 /** * 选择图片 */ uploadImgAdd: function(e) { var imgs = this.data.imgs; wx.ch ...
- 高并发web系统设计
转载自:http://blog.csdn.net/qq_26562641/article/details/53170913 一.一般高并发web系统这里的一般指的是秒杀之类的电子商务系统,比如说小米抢 ...
- python如何命令行下载包
$ wget https://bootstrap.pypa.io/get-pip.py $ python get-pip.py $ pip -V #查看pip版本 $ pip install ...
- 洛谷——P1428 小鱼比可爱
https://www.luogu.org/problem/show?pid=1428 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从 ...
- 转:iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
iosiOSIOS文档服务器测试电话 由于app内需要用到支付功能,选择了当前最流行的支付宝进行支付.在进行内嵌支付宝功能开发时,被它狠狠的耍了一把. 根据支付宝开发文档,参考demo代码.将相关支付 ...
- java 基本类型、包装类、字符串之间的转换
1.基本类型和包装类 基本类型和包装类可通过自动装箱和拆箱实现. int i = 24; Integer a = new Integer(i); //手动装箱 Integer b = i; //自动装 ...
- new,malloc,GlobalAlloc具体解释
WINDOWS下最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是栈,而是直接在进程的地址空间中保留一快内存.尽管用起来最不方便. 可是速度快,也最灵活 new,malloc,Glob ...
- angularjs $location 服务
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- HTML5,CSS3新特性,与旧版的区别
HTML5新特性 (1)语意化更好的内容元素,比如 article.footer.header.nav.section (2)本地存储.sessionStorage.localStorage和inde ...