快餐
   

  在一条公路旁有很多快餐连锁店,还需要在公路旁修一些仓库,用来给这些餐馆补给物资。很自然的,我们希望每个餐馆和补给它的仓库的距离总和最小,你的任务是写一个程序给出该最小值以及各个仓库的位置和分配。

  更确切的说,我们会给你n个整数,分别表示n个餐馆的位置坐标(沿着公路,假设公路为直线)。然后还会给你一个整数k (k ≤ n)表示仓库的数目。

  这k个仓库会修在k个不同的餐馆处,每个餐馆分配离它最近的仓库。总的距离和定义如下:

          

  写一个程序计算出仓库的位置,使得上述距离总和最小。

  输入

  输入文件包含很多段,每一段是很多行。除了最后一段外,每一段都定义了一些餐馆的位置以及仓库的个数。每一段的第一行是两个整数n和k,分别满足1≤n≤200,1≤k≤30,k≤n。接下来是n行,每行一个整数,顺序的表示餐馆的位置。

  最后一段只包含n=k=0,这段不用处理。

  输出

  对于每个段,首先输出号码,接着以如下方式输出仓库的位置:对于每个仓库用一行输出它的位置和它供给的餐馆编号。如果有多于一个的最优解,只需输出其中任何一个。最后用一行输出总的距离和。

  每个段后输出一个空行。

  

  输入文件:

  6 3
  5
  6
  12
  19
  20
  27
  0 0

  输出文件:
  Chain 1
  Depot 1 at restaurant 2 serves restaurants 1 to 3
  Depot 2 at restaurant 4 serves restaurants 4 to 5
  Depot 3 at restaurant 6 serves restaurant 6
  Total distance sum = 8

   

 
网站导航 | 关于曙光 | 联系我们 | 请提意见
Copyright © FuJian Sunshine Educational Info. Co.,Ltd.
福建曙光教育资讯有限公司 版权所有