【题目描述】

政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为didi(为正整数),其中,0<i<m。为了提高山区的文化素质,政府又决定从m个村中选择n个村建小学(设0<n≤m<500)。请根据给定的m、n以及所有相邻村庄的距离,选择在哪些村庄建小学,才使得所有村到最近小学的距离总和最小,计算最小值。

【输入】

第1行为m和n,其间用空格间隔

2行为m−1个整数,依次表示从一端到另一端的相邻村庄的距离,整数之间以空格间隔。

例如:

10 3

2 4 6 5 2 4 3 1 3

表示在10个村庄建3所学校。第1个村庄与第2个村庄距离为2,第2个村庄与第3个村庄距离为4,第3个村庄与第4个村庄距离为6,...,第9个村庄到第10个村庄的距离为3。

【输出】

各村庄到最近学校的距离之和的最小值。

【输入样例】

10 2
3 1 3 1 1 1 1 1 3

【输出样例】

18

【源程序】

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int dis[510];
int a[510][510];
int dp[510][510];
int main()
{int m,n;int i,j,k;memset(a,0,sizeof(a));cin>>m>>n;dis[1]=0;for(i=2;i<=m;i++){cin>>dis[i];dis[i]+=dis[i-1];}for(i=1;i<=m;i++)//学校建在i村j村的中间村落for(j=i+1;j<=m;j++)a[i][j]=a[i][j-1]+dis[j]-dis[(i+j)/2];for(i=1;i<=m;i++)for(j=1;j<=i&&j<=n;j++)dp[i][j]=9999999999;for(i=1;i<=m;i++)//dp[i][j]前i个村建j所学校,最短距离dp[i][1]=a[1][i];for(i=2;i<=m;i++)for(j=2;j<=i&&j<=n;j++)for(k=j-1;k<i;k++)dp[i][j]=min(dp[i][j],dp[k][j-1]+a[k+1][i]);cout<<dp[m][n]<<endl;return 0;
}

山区建小学(信息学奥赛一本通-T1197)相关推荐

  1. 信息学奥赛一本通(1197:山区建小学)

    1197:山区建小学 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 3900     通过数: 2713 [题目描述] 政府在某山区修建了一条道路,恰好穿越总共m ...

  2. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  3. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  4. 信息学奥赛一本通在线提交地址

    信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...

  5. 动态规划——openjudge7624山区建小学

    题目: 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i ...

  6. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  7. 信息学奥赛一本通 题解目录

    刷题 很全的知识体系 转载:https://blog.csdn.net/u011815404/article/details/79324003 第一部分 C++语言 第一章 C++语言入门 T1001 ...

  8. 信息学奥赛一本通测评网 1199 全排列 递归算法 Dangerise

    老师要求写一篇题解,作为一个十分认真,踏实的学生,就用心的找道简单的题敷衍一下吧. 来看这道题 ​​​​​​信息学奥赛一本通(C++版)在线评测系统 这道题既然在递归算法的标签下,就用递归来做吧. 先 ...

  9. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

最新文章

  1. Nature封面:AI与人类斗嘴谁更强?IBM团队发布“AI辩论家”最新研究进展
  2. python读文件代码-Python遍历文件夹和读写文件的实现代码
  3. 解决样本不平衡问题的奇技淫巧 汇总
  4. echarts热力背景图_Echarts 图表中设置背景图片
  5. flinksql写入hudi 踩坑实录
  6. php ci sql性能时间,Codeigniter操作数据库表的优化写法总结
  7. 让Python删除window下文件
  8. andoid-sdk 安装时出现 Stopping ADB server failed(code -1) 错
  9. 【好书推荐】学习软件工程的必经之路 | 《人月神话》
  10. 网管必用的10款软件系统
  11. 定时器的用法以及pwm的调速
  12. 蓝牙音箱之避免自动关机
  13. 划分子网(计算机网络)
  14. Android Studio 学习资料大全
  15. httpclient 设置短连接_关于HTTP的长连接和短连接那些事
  16. window系统下安装VS(Microsoft Visual Studio),及Visual Studio使用教程
  17. 《惢客创业日记》2019.11.28(周四)近者悦,远者来
  18. 2022年,我加入了微软MVP大家庭
  19. 聊聊那些Git的基本概念
  20. redux-saga实现与原理

热门文章

  1. 什么是Apache Spark?这篇文章带你从零基础学起
  2. Spark入门必读:核心概念介绍及常用RDD操作
  3. 如何解决 IDEA 占用大量 CPU 导致的卡顿问题?这顿操作猛如虎
  4. 太强了,300分钟撸一个基于redis的亿级用户高并发系统
  5. 从0到1设计一个秒杀系统
  6. 【视频教程】JEECG 入门视频教程
  7. 【JEECG 官方】技术支持联系方式
  8. 华为云TaurusDB性能挑战赛-java赛题mvn编译时报错:不支持 diamond 运算符
  9. Socket编程实践(9) --套接字IO超时设置方法
  10. 数据结构拾遗(2) --红黑树的设计与实现(中)