HDU 1227 Fast Food (DP)
2014-05-04 00:22
441 查看
题目链接
题意 : 有n个饭店,要求建k个供应点,要求每个供应点一定要建造在某个饭店的位置上,然后饭店都到最近的供应点拿货,求出所有饭店到最近的供应点的最短距离。
思路 : 一开始没看出来是DP,后来想想就想通了。预处理,如果要在下标为 i 到 j 的饭店建一个供应点,那一定是在下标为(i+j)/2的位置建造的,状态转移方程:dp[i][j] = dp[i-1][k-1]+dis[k][j](i <= k <= j) ,dp[i][j]代表的是在前 j 个饭店中建了 i 个供应点的最小距离。方程代表的是在前k-1个饭店中已经建了i-1个供应点的最小距离再加上从第k个饭店到第j个饭店建一个供应点增加的距离。如果不明白可以看这里,链接
View Code
题意 : 有n个饭店,要求建k个供应点,要求每个供应点一定要建造在某个饭店的位置上,然后饭店都到最近的供应点拿货,求出所有饭店到最近的供应点的最短距离。
思路 : 一开始没看出来是DP,后来想想就想通了。预处理,如果要在下标为 i 到 j 的饭店建一个供应点,那一定是在下标为(i+j)/2的位置建造的,状态转移方程:dp[i][j] = dp[i-1][k-1]+dis[k][j](i <= k <= j) ,dp[i][j]代表的是在前 j 个饭店中建了 i 个供应点的最小距离。方程代表的是在前k-1个饭店中已经建了i-1个供应点的最小距离再加上从第k个饭店到第j个饭店建一个供应点增加的距离。如果不明白可以看这里,链接
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> using namespace std; const int maxn = 0x7fffffff ; int a[210] ,dis[210][210],dp[210][210]; int main() { int n,k ,cas = 1; while(~scanf("%d %d",&n,&k)) { if(n == 0 && k == 0 ) break ; for(int i = 1 ; i <= n ; i++) scanf("%d",&a[i]) ; for(int i = 1 ; i <= n ; i++) { for(int j = i ; j <= n ; j++) { dis[i][j] = 0 ; for(int k = i ; k <= j ; k++) dis[i][j] += fabs(a[k]-a[(i+j)/2] ); } } memset(dp,0,sizeof(dp)) ; for(int i = 1 ; i <= n ; i++) dp[1][i] = dis[1][i] ; for(int i = 2 ; i <= k; i++) { for(int j = 2 ; j <= n ; j++) { int minn = maxn ; for(int k = i ; k <= j ; k++) { if(dp[i-1][k-1]+dis[k][j] < minn) minn = dp[i-1][k-1]+dis[k][j] ; } dp[i][j] = minn ; } } printf("Chain %d\nTotal distance sum = %d\n\n",cas++,dp[k] ); } return 0; }
View Code
相关文章推荐
- BOOST_CLASS_EXPORT
- Careercup - Google面试题 - 4857362737266688
- [C/C++标准库]_[初级]_[优先队列priority_queue的使用]
- 【雷电】源码分析(一)-- 进入游戏开始界面
- [C/C++标准库]_[初级]_[优先队列priority_queue的使用]
- UVaOJ 494 - Kindergarten Counting Game
- 23web app实现上下左右滑动
- SSD固态存储大观(一)
- UVaOJ 458 - The Decoder
- UVaOJ 10300 - Ecological Premium
- 用C语言实现面向对象之封装
- UVaOJ 10071 - Back to High School Physics
- UVaOJ 10055 - Hashmat the Brave Warrior
- unity 一些快捷键与区别
- PAT 1072. Gas Station (30)
- oracle:RETURNING 子句
- c#植物大战僵尸素材提取
- ZOJ 1295 - Reverse Text
- chrome一个奇怪的问题
- 劳动节BT5 aircrack-ng战记