HDU_1227_Fast Food_动态规划
2016-05-07 16:29
351 查看
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1227
Total Submission(s): 2695 Accepted Submission(s): 1142
[align=left]Problem Description[/align]
The fastfood chain McBurger owns several restaurants along a highway. Recently, they have decided to build several depots along the highway, each one located at a restaurant and supplying several of the restaurants with the needed ingredients. Naturally, these depots should be placed so that the average distance between a restaurant and its assigned depot is minimized. You are to write a program that computes the optimal positions and assignments of the depots.
To make this more precise, the management of McBurger has issued the following specification: You will be given the positions of n restaurants along the highway as n integers d1 < d2 < ... < dn (these are the distances measured from the company's headquarter, which happens to be at the same highway). Furthermore, a number k (k <= n) will be given, the number of depots to be built.
The k depots will be built at the locations of k different restaurants. Each restaurant will be assigned to the closest depot, from which it will then receive its supplies. To minimize shipping costs, the total distance sum, defined as
View Code
Fast Food
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2695 Accepted Submission(s): 1142
[align=left]Problem Description[/align]
The fastfood chain McBurger owns several restaurants along a highway. Recently, they have decided to build several depots along the highway, each one located at a restaurant and supplying several of the restaurants with the needed ingredients. Naturally, these depots should be placed so that the average distance between a restaurant and its assigned depot is minimized. You are to write a program that computes the optimal positions and assignments of the depots.
To make this more precise, the management of McBurger has issued the following specification: You will be given the positions of n restaurants along the highway as n integers d1 < d2 < ... < dn (these are the distances measured from the company's headquarter, which happens to be at the same highway). Furthermore, a number k (k <= n) will be given, the number of depots to be built.
The k depots will be built at the locations of k different restaurants. Each restaurant will be assigned to the closest depot, from which it will then receive its supplies. To minimize shipping costs, the total distance sum, defined as
#include<iostream> #include<cstdio> #include<stdlib.h> #include<cstring> using namespace std; #define LL long long int dis[205]; int dist[205][205]; int dp[35][205]; int main() { int n,k,cases=1; while(scanf("%d%d",&n,&k)!=EOF&&n&&k) { memset(dist,0,sizeof(dist)); for(int i=0; i<=k; i++) for(int j=0; j<=n; j++) dp[i][j]=2000000000; //cout<<dp[0][0]; dp[0][0]=0; dp[1][1]=0; for(int i=1; i<=n; i++) scanf("%d",&dis[i]); for(int i=1; i<=n-1; i++) for(int j=i; j<=n; j++) { int mid=(i+j)/2; for(int k=i; k<=j; k++) dist[i][j]+=abs(dis[mid]-dis[k]); } for(int i=1;i<=n;i++) dp[1][i]=dist[1][i]; for(int j=2; j<=n; j++) for(int i=2; i<=j,i<=k; i++) for(int m=i-1; m<=j-1; m++) dp[i][j]=min(dp[i][j],dp[i-1][m]+dist[m+1][j]); printf("Chain %d\n",cases++); printf("Total distance sum = %d\n\n",dp[k] ); } return 0; }
View Code
相关文章推荐
- 利用arduino 控制舵机转动
- 单调旋转数组的TopK问题
- C++实验5-数组分离
- java的路径研究
- 框架选择的原因及其说明
- Elasticsearch+Logstash+Kibana教程
- 个位数统计
- xml解析-jaxp-sax方式
- Struts2中的struts.i18n.encoding的较量
- 欧拉函数
- Java简单实例--小超市
- 共享内存的常用函数原理剖析
- Difference Between Hard & Soft Links
- ios开发之NSTimer 详细设置
- 《逃离德黑兰》
- VS 数组遇到的问题
- 创建一个内容提供者Creating a Content Provider——翻译总结自developer.android.com
- 介绍LEDE工程-openwrt社区讨论1
- 观察者模式实现事件驱动模型(非GUI事件)
- Android APP 启动时间测试