hdu1227 Fast Food

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1227

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string.h>
#include <string>

using namespace std;

const int MAXN = 200 + 1;    //the number of restaurants
const int MAXM = 30 + 1;     //the number of depots
int dp[MAXN][MAXM], value[MAXN][MAXN], pos[MAXN];
int n, k;    //输入值

/*
dp[i][j]表示在i个饭店之间建设j个仓库的最短距离,
value[i][j]表示在第i个饭店与第j个饭店之间建设一个仓库,
并由这个仓库供给i到j之间的饭店(包括i,j)的最短距离。
很明显这个仓库需要建设在i与j的中位数旁边即mid = (i + j) / 2;
当i到j之间有奇数个饭店时mid = i到j最中间的点,
当i到j之间有偶数个饭店时mid = i到j之间最中间的两点的左边的
一点(右边的一个点也可以,其实只要是这两个点之间的点都可以)
pos[]数组存每个输入饭店的位置。
*/

void input()
{
    int cases = 0;

    while (scanf("%d %d", &n, &k) != EOF)    //输入
    {
        if (!n && !k) break;

        int mid = 0;

        for (int i = 1; i <= n; i++)
        {
            scanf("%d", &pos[i]);
        }

        for (int i = 1; i <= n; i++)    //计算value[][]数组
        {
            for (int j = i; j <= n; j++)
            {
                mid = (i + j) / 2;
                value[i][j] = 0;
                for (int x = i; x <= j; x++)
                {
                    value[i][j] += abs(pos[x] - pos[mid]);
                }
            }
        }

        for (int i = 1; i <= n; i++) dp[i][1] = value[1][i];
        for (int i = 1; i <= n; i++)    //计算dp[][];
        {
            for (int j = 2; j <= i && j <= k; j++)
            {
                dp[i][j] = dp[i - 1][j - 1];    //赋初值,直接在第i个饭店处放置一个仓库
                for (int x = j - 1; x < i; x++)    //k的范围
                {
                    if (dp[x][j - 1] + value[x + 1][i] < dp[i][j])
                    {
                        dp[i][j] = dp[x][j - 1] + value[x + 1][i];
                    }
                }
            }
        }

        printf("Chain %d\n", ++cases);    //输出
        printf("Total distance sum = %d\n\n", dp[n][k]);
    }
}

int main()
{
    input();
    return 0;
}

hdu1227 Fast Food,布布扣,bubuko.com

时间: 2024-10-08 17:31:07

hdu1227 Fast Food的相关文章

HDU1227:Fast Food

题目链接:Fast Food 题意:一条直线上有n个饭店,问建造k个原料厂(仍旧在商店位置)得到的最小距离 分析:见代码 //一条直线上有n个饭店,问建造k个原料厂(仍旧在商店位置)得到的最小距离 //首先预处理从i到j的最小距离,可以知道选的点必为(i+j)/2,所以用dis[i][j]记录距离 //dp[i][j]表示前j个建造了i个原料厂的最小距离, //状态转移:dp[i][j]从min(dp[i-1][m])(i-1<=m<=j-1)转移过来,因为 //需要建厂的位置可选在i~j,故

Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast

1.事件描述:CentOS7下使用tree命令,发现该命令没有被安装,在安装的过程中发现yum报错 [[email protected] ~]# tree -d bash: tree: 未找到命令... [[email protected] ~]# yum -y install tree 已加载插件:fastestmirror, langpacks Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast

UVA 11992(Fast Matrix Operations-线段树区间加&amp;改)[Template:SegmentTree]

Fast Matrix Operations There is a matrix containing at most 106 elements divided into r rows and c columns. Each element has a location (x,y) where 1<=x<=r,1<=y<=c. Initially, all the elements are zero. You need to handle four kinds of operati

Fast Paxos(转)

自从Lamport在1998年发表Paxos算法后,对Paxos的各种改进工作就从未停止,其中动作最大的莫过于2005年发表的Fast Paxos.无论何种改进,其重点依然是在消息延迟与性能.吞吐量之间作出各种权衡.为了容易地从概念上区分二者,称前者Classic Paxos,改进后的后者为Fast Paxos. 1. Fast Paxos概览 Lamport在40多页的论文中不仅提出了Fast Paxos算法,并且还从工程实践的角度重新描述了Paxos,使其更贴近应用场景.从一般的Client

HDU 4965 Fast Matrix Calculation 【矩阵】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4965 题目大意:给你一个N*K的矩阵A以及一个K*N的矩阵B (4 <= N <= 1000)以及 (2 <=K <= 6),然后接下来四步: 算一个新的矩阵C=A*B 算M=C^ (N*N) 对于M中的每个元素%6 将M中每个元素加起来,算出和. 也就是求出A*B * A*B * A*B * A*B * A*B *--* A*B   但是A*B形成的矩阵是N*N,而N大小有可能是10

Fast检测角点算法

1.角点定义 角点是一种局部特征,具有旋转不变性和不随光照条件变化而变化的特点,一般将图像中曲率足够高或者曲率变化明显的点作为角点.检测得到的角点特征通常用于图像匹配.目标跟踪.运动估计等方面. 2.Fast检测角点 1)基本思想 E.Rosten和T.Drummond两位大佬在06年一篇文章中提出了FAST特征算法,基本思想十分简单:以某个像素点为圆心,某半径的圆周上其他像素点与圆心像素点特性差异达到某种标准时即认为该点就是角点. 2)数学模型 经过测试发现,选取的圆形半径为3时可以兼顾检测结

Linux内核协议栈 NAT性能优化之FAST NAT

各位看官非常对不起,本文是用因为写的,如果多有不便敬请见谅 代码是在商业公司编写的,在商业产品中也不能开源,再次抱歉 This presentation will highlight our efforts on optimizing the Linux TCP/IP stack for providing networking in an OpenStack environment, as deployed at our industrial customers. Our primary go

快速近似最近邻搜索库 FLANN - Fast Library for Approximate Nearest Neighbors

What is FLANN? FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It contains a collection of algorithms we found to work best for nearest neighbor search and a system for automatically choosing t

11G新特性 -- ASM Fast Mirror Resync

ASM Fast Mirror Resync     在oracle 10g中,如果asm磁盘因为光纤.控制器发生故障而发生failure,asm将无法继续向该磁盘中写入数据.     asm会将发生failure的磁盘变为offline,等从其它冗余组同步完数据后,将该磁盘drop.asm不会再从被offline的磁盘读取数据,因为asm认为该磁盘的数据是过期的.     即使failure的磁盘被自动修复,也需要手动将磁盘重新插回重新数据同步.     1.将磁盘offline,并指定dro