UVA 662 Fast Food 区间DP
来源:互联网 发布:alien skin x2 mac 编辑:程序博客网 时间:2024/05/11 15:35
参照了别人的思路,
#include <map>#include <set>#include <list>#include <cmath>#include<cctype>#include <ctime>#include <deque>#include <stack>#include <queue>#include <cstdio>#include <string>#include <vector>#include<climits>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#define LL long long#define PI 3.1415926535897932626using namespace std;int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}#define MAXN 210int dp[MAXN][MAXN],fa[MAXN][MAXN];int N,K,id;int mid[MAXN][MAXN];int src[MAXN];int dis[MAXN][MAXN];void init(){ for (int i=1;i<=N;i++) scanf("%d",&src[i]); memset(dis,0,sizeof(dis)); for (int i=1;i<=N;i++) { mid[i][i]=i; for (int j=i+1;j<=N;j++) { int m=(i+j)/2; mid[i][j]=m; for (int k=i;k<=j;k++) dis[i][j]+=abs(src[k]-src[m]); } }}void calcu(){ for (int i=1;i<=N;i++) for (int j=0;j<=K;j++) dp[i][j]=1e8; memset(dp[0],0,sizeof(dp[0])); for (int i=1;i<=N;i++) for (int j=1;j<=K;j++) for (int k=1;k<=i;k++) { if (dp[k-1][j-1]+dis[k][i]<=dp[i][j]) { dp[i][j]=dp[k-1][j-1]+dis[k][i]; fa[i][j]=k; } }}void output(int i,int j){ if( i<1 || j<1)return ; output(fa[i][j]-1,j-1); printf("Depot %d at restaurant %d serves restaurant", id++, mid[fa[i][j]][i]); if (fa[i][j]==i) printf(" %d\n",i); else printf("s %d to %d\n",fa[i][j],i);}int main(){ int kase=1; while (scanf("%d%d",&N,&K)!=EOF) { if (N==0 && K==0) break; init(); calcu(); printf("Chain %d\n",kase++); id=1; output(N,K); printf("Total distance sum = %d\n\n", dp[N][K]); } return 0;}
0 0
- UVA 662 Fast Food 区间DP
- UVA - 662 Fast Food 区间DP
- uva 662 - Fast Food(dp)
- UVA 662 Fast Food(dp)
- Fast Food - UVa 662 dp
- UVA 662 Fast Food(DP)
- uva 662 Fast Food (dp)
- UVA 662 Fast Food(dp)
- dp( UVa 662 Fast Food )
- uva_662 - Fast Food( 区间DP )
- uva 662 Fast Food
- UVA 662 Fast Food
- UVA 662 Fast Food
- UVA - 662 Fast Food
- uva 662 - Fast Food
- uva 662 - Fast Food
- UVA 662 - Fast Food
- UVa 662 - Fast Food
- 程序员生存定律-打造属于自己的稀缺性
- 东软学习,oracle函数与触发器
- Java Thread(线程)案例详解sleep和wait的区别
- EGORefreshTableHeaderView--ARC下面的使用 UItableView下来刷新的使用
- hdu 1005 Number Sequence(智寻循环节)
- UVA 662 Fast Food 区间DP
- 【金阳光测试】--深入Monkey工具和使用--Android系列(3)2014年八月八号
- qt html标签
- fatal error: android/native_window.h: No such file or directory
- 数据库分表与分区
- mysql_connect() [function.mysql-connect]: [2002] 由于目标计算机积极拒绝,无法连接。解决方案
- Windos 下安装Ubuntu系统
- 很炫的css样式
- hdu4925Apple Tree(找规律)