pku1485 Fast Food
2010-03-08 19:46
211 查看
题目链接:http://acm.pku.edu.cn/JudgeOnline/problemlist?volume=2
题意简述:n个restaurants,k个depots,把k个depots建在n个restaurants的k个中,求怎么建使得n个restaurants到depot取材料所需总路程最短。
解题思路:同pku1160,就是加了个记录路径的简单操作。题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1160
pku1160解题报告:http://blog.csdn.net/ccsu_001/archive/2009/10/15/4677158.aspx
这题的代码:
题意简述:n个restaurants,k个depots,把k个depots建在n个restaurants的k个中,求怎么建使得n个restaurants到depot取材料所需总路程最短。
解题思路:同pku1160,就是加了个记录路径的简单操作。题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1160
pku1160解题报告:http://blog.csdn.net/ccsu_001/archive/2009/10/15/4677158.aspx
这题的代码:
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; #define min(a,b) (a<=b ? a:b) const int Len1=202; const int Len2=32; const int inf=1<<30; int dp[Len1][Len2],dp1[Len1][Len1]; int a[Len1]; inline int abs(int a) { if(a>=0) return a; else return (-a); } int main() { int n,m; int Case=0; while(scanf("%d%d",&n,&m)&&(n||m)) { for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) dp1[i][i]=0; for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) { int mid=(i+j+1)>>1; int sum=0; for(int k=i;k<=j;k++) if(k!=mid) sum+=abs(a[k]-a[mid]); dp1[i][j]=sum; } memset(dp,25,sizeof(dp)); for(int i=1;i<=m;i++) dp[1][i]=0; int b[32]; for(int i=2;i<=n;i++) { dp[i][1]=dp1[1][i]; b[1]=(1+i+1)>>1; for(int j=2;j<=(m<=i ? m:i);j++) { dp[i][j]=inf; for(int k=1;k<=i-1;k++) dp[i][j]=min(dp[i][j],dp[k][j-1]+dp1[k+1][i]); } } int tempn; int nn=n; int out[32][2]; for(int j=m;j>=2;j--) { tempn=nn; int temp=inf; for(int k=1;k<=tempn-1;k++) { if(dp[k][j-1]+dp1[k+1][tempn]<temp) { b[j]=(tempn+k+2)>>1; out[j][1]=tempn; out[j][0]=k+1; temp=dp[k][j-1]+dp1[k+1][tempn]; nn=k; } } } b[1]=(1+nn+1)>>1; out[1][1]=nn; out[1][0]=1; printf("Chain %d/n",++Case); for(int i=1;i<=m;i++) if(out[i][1]!=out[i][0]) printf("Depot %d at restaurant %d serves restaurants %d to %d/n",i,b[i],out[i][0],out[i][1]); else printf("Depot %d at restaurant %d serves restaurant %d/n",i,b[i],out[i][0]); printf("Total distance sum = %d/n/n",dp [m]); } return 0; }
相关文章推荐
- POJ 1485 Fast Food 笔记
- poj 1485 Fast Food
- poj 1485 Fast Food dp
- poj 1485 Fast Food(区间dp)
- zoj 1196 Fast Food 动态规划
- 662 - Fast Food
- uva 662 Fast Food
- HDU_1227_Fast Food_动态规划
- hdu1227_Fast Food
- HDU 1227 Fast Food DP
- hdu 1277 Fast Food (dp)
- uva662 - Fast Food(递推)
- hdoj 1227 Fast Food 【dp】
- HDU 1227 Fast Food DP *
- UVA 662 Fast Food
- 小白dp uva 662 - Fast Food (除夕夜的博客 ^ ^)
- HDU 1227 Fast Food (DP)
- UVA662- Fast Food
- [ACM] HDU 1227 Fast Food (经典Dp)
- FOJ 1005 Fast Food