/*
状态:f[i][j] 前i个村庄已经建了j个学校
转移:f[i][j]=min(f[i][j],f[ii][j-1]+s[ii+1][i]) 1<=ii<=i-1
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include <algorithm>
using namespace std;
int n,m,a[505],h[505],s[505][505],f[505][505],ans;
int Dfs(int nn,int mm)
{int i,j,k;if(f[nn][mm]<0x3f3f3f3f)return f[nn][mm];//记忆化(如果10000000 会TLE) if(nn<=mm)return f[nn][mm]=0;//每个村都可以建 返回0 if(mm==1)return f[nn][mm]=s[1][nn];//只建一个 返回最大(此时建在中点) for(i=1;i<=nn-1;i++)f[nn][mm]=min(f[nn][mm],Dfs(i,mm-1)+s[i+1][nn]);// 转移式表示在区间i+1..nn的中点建立一所学校使这个区间内的所有村庄都到这里上学,其中s为最小距离之和。return f[nn][mm];
}
int main()
{int i,j,k,mm;cin>>n>>m;for(i=1;i<=n-1;i++)cin>>a[i];for(i=1;i<=n;i++)h[i]=h[i-1]+a[i-1];//前缀和 memset(f,0x3f,sizeof(f));for(i=1;i<=n;i++)for(j=i;j<=n;j++){mm=(i+j)/2;for(k=i;k<=j;k++)s[i][j]+=abs(h[mm]-h[k]);//i-->j建一个学校最少路程和(默认建在(i+j)/2处)
        }ans=Dfs(n,m);cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/yanlifneg/p/5424926.html

codevs4203山区建小学相关推荐

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

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

  2. 【披着递推皮的动态规划】 山区建小学 题解

    今天小编随意写了一道老师布置的题,这是一道看起来很普通的题,我却不明白它为什么放在递推中-- 废话不多说,直接看题. ▍1197:山区建小学 [题目描述] 政府在某山区修建了一条道路,恰好穿越总共m个 ...

  3. 1197 山区建小学

    1197 山区建小学 读题20分钟,想题10分钟,看代码20分钟,理解代码20分钟,写代码10分钟,调代码40分钟-(逃 个人感觉是练的递推里面比较复杂的,应该是一道绿题吧,光递推式就很难找 设状态a ...

  4. 【Open Judge】7624 山区建小学

    ** 7624:山区建小学 ** ** 描述 ** 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为d ...

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

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

  6. 7624:山区建小学

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

  7. 【OpenJudge - noi - 7624】山区建小学(dp)

    题干: 总时间限制: 1000ms 内存限制: 65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的 ...

  8. 山区建小学(信息学奥赛一本通-T1197)

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

  9. openjudge7624:山区建小学

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

最新文章

  1. 微软MCITP系列课程(二七)管理域和林信任
  2. pacman安装php的位置,PacMan 01——地图的搭建
  3. Office 2010 Multi-language Pack download
  4. HTML5表单的创建及与PHP的交互
  5. Android_(菜单)选项菜单
  6. python算法题_python基本算法题(一)
  7. VS2019 禁止Web项目停止调试后自动关闭浏览器(在浏览器窗口关闭时停止调试程序,在调试停止时关闭浏览器)
  8. java地图 热力图,腾讯地图数据可视化之热力图
  9. 个人作业-Week1
  10. 亟待学习的内容 提醒贴
  11. Android fragment原因,Android总结之Fragment
  12. 2021大学网课答案搜题公众号
  13. 笔记本外接显示器之后扩展屏分辨率问题
  14. html 向上滑动,jQuery - 使用.slideUp()方法向上滑动HTML元素
  15. 现在应该继续投资公链?还是投资应用级协议?
  16. python根据日期生成动态密码
  17. 计算机安全会议2017,科学网-第四届中国密码学与数据安全学术会议(CCDS2017)在衡阳师院召开-李浪的博文...
  18. 计算机中负数和正数的二进制表示
  19. java做一个日历程序_java实现的一个简单日历
  20. Halcon视觉软件库介绍

热门文章

  1. linux arm下硬件驱动程序放哪里,Arm-Linux摄像头驱动程序的移植
  2. STM32-时钟-时钟树-时钟初始化配置
  3. 编写有效用例电子版_软件测试人员必须编写代码吗?
  4. promise的状态以及api介绍_2019年,盘点一些我出过的前端面试题以及对求职者的建议
  5. android+录像中截图软件下载,录屏截图大师app
  6. java final 变量只读_java final的使用总结
  7. oracle10g支持数据泵么,Oracle 10g使用数据泵(EXPDP和IMPDP)。
  8. 利用代码分别实现jdk动态代理和cglib动态代理_面试之动态代理
  9. php商城的购物车功能,php实现购物车功能(以大苹果购物网为例)
  10. Git clone的使用方法