给n个村子建p个邮局,求最佳的建设方案使得每个村子到最近的邮局的距离和最短,输出最短距离。

首先递推求出n个村子建1个邮局的最佳方案,画下图很容易理解。

再递推求解多个邮局的最佳方案,具体的看注释吧。

/*
//k从1枚举到i-1就够了
dp[i][j]=min(dp[i][j],dp[k][j-1]+sum[k+1][i]);这个画下图很好推出来的。
sum[i][j]=sum[i][j-1]+p[j]-p[(i+j)/2];
*/#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int sum[305][305];      //在i到j之间建一个邮局的最小消耗
int p[305];
int dp[305][305];       //前i个村子建j个邮局的最小消耗int main()
{int n,k;while(~scanf("%d%d",&n,&k)){memset(dp,0x3f,sizeof(dp));memset(sum,0,sizeof(sum));p[0]=0;for(int i=1;i<=n;i++){scanf("%d",&p[i]);}for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){sum[i][j]=sum[i][j-1]+p[j]-p[(i+j)/2];}dp[i][1]=sum[1][i];dp[i][i]=0;}for(int j=2;j<=k;j++){for(int i=j+1;i<=n;i++){for(int k=1;k<i;k++){dp[i][j]=min(dp[i][j],dp[k][j-1]+sum[k+1][i]);}}}printf("%d\n",dp[n][k]);}return 0;
}

poj 1160 Post Office(DP简单题)相关推荐

  1. POJ 1160 Post Office(经典DP)

    题目链接:点击打开链接 题意:一条高速公路,有N个村庄,每个村庄均有一个唯一的坐标,选择P个村庄建邮局,问怎么选择,才能使每个村庄到其最近邮局的距离和最小?最后打印这个最小值. 思路:典型的DP问题. ...

  2. poj 1160(Post Office)

    http://poj.org/problem?id=1160 先讲讲我的思路:这道题首先很容易想到是用动态规划思想,所以我定义了一个二维数组dp[i][j],表示前j个位置,修建了i个邮局.所以推导出 ...

  3. 洛谷 P2196 [NOIP1996 提高组] 挖地雷(dp简单题)

     题目链接: [NOIP1996 提高组] 挖地雷 - 洛谷 思路: 典型的dp题,由于题目规定了只能由编号小的地窖到编号大的,所以dp顺序是确定的,不需要进行拓扑排序,只需要判断 i,j 之间是否有 ...

  4. POJ 1160 Post Office

    WA 1. 写出了 dist[][] 数组和 minDist() 函数, 实现了 minDist 函数但最终却是使用了 dist 数组 不一致 代码 #include <iostream> ...

  5. POJ 1155 TELE 背包型树形DP 经典题

    由电视台,中转站,和用户的电视组成的体系刚好是一棵树 n个节点,编号分别为1~n,1是电视台中心,2~n-m是中转站,n-m+1~n是用户,1为root 现在节点1准备转播一场比赛,已知从一个节点传送 ...

  6. 自用力扣笔记备忘录——数组tag简单题

    想来想去还是决定写在csdn,本地的移动性不太好 此备忘录自用为住,方便本人复习用的 方法1为本人自己写的,其他的均有参考 目录若无方法一只有方法二,则是没写出来: 如果没有方法N小标题说明这个题官方 ...

  7. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

  8. POJ 1692 Crossed Matchings dp[][] 比较有意思的dp

    http://poj.org/problem?id=1692 这题看完题后就觉得我肯定不会的了,但是题解却很好理解.- - ,做题阴影吗 所以我还是需要多思考. 题目是给定两个数组,要求找出最大匹配数 ...

  9. leetcode 最常见的150道前端面试题(简单题下)

    本文题目选自 LeetCode 精选 TOP 面试题[1],这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位). 本篇是简单题(下)20题左右,上半部分详见leet ...

最新文章

  1. CMS 被废弃了,该怎么办呢?
  2. 水晶报表Crystal 语法 实用字段编辑
  3. wiki维基百科上logo中字母的意思是什么?
  4. 软件测试报告重点审核点有哪些,软件测试-测试报告.doc
  5. Aroma's Search(暴力)
  6. 这个技能,让可视化大屏开挂一样的秀!
  7. 安装cuda时 提示toolkit installation failed using unsupported compiler解决方法
  8. mysql5.4升级5.6_Laravel5.4 升级到 5.6
  9. JAVA 基础语法(六)——方法(函数)
  10. DBeaver下载安装教程
  11. 华为MateBook E 12.6英寸 win11 16g+512g 轻评测
  12. 【Java 线程池 概念+深析】简单理解
  13. ChatGPT百科全书(全网最全面)
  14. Servlet-01
  15. 配电站智能巡检机器人,电力智能巡检机器人
  16. do while和while的区别
  17. Python数据分析_第06课:数据清洗与初步分析_笔记
  18. ARCGIS中按照某字段属性批量导出shp ,即将一个shp图层分割成单个的shp
  19. 华为2017年9月校招芯片类面试经验
  20. 大学四年,研究生三年,我的学习宝典。

热门文章

  1. 华为机试HJ62:查找输入整数二进制中1的个数
  2. 用计算机语言拜年,鸡年大吉!22种编程语言大拜年
  3. PHP网站开发有哪些框架,罗列几款时下高人气的PHP开发框架
  4. 在html中如何写图片渐变,如何通过CSS3实现背景图片色彩的梯度渐变_html/css_WEB-ITnose...
  5. mybatis存在就不插入_mybatis只能进行查找,不能进行删除,插入,更新解决方案...
  6. python如何升级_python pip如何升级
  7. c 语言生成json 文件,如何用c语言反序列化JSON文件#
  8. 使用Docker+Grafana+InfluxDB可视化展示Jenkins构建信息
  9. 从功能测试到接口测试,原来的技能可以通用
  10. utittest和pytest中mock的使用详细介绍