【洛谷P4677】山区建小学
题目大意:给定一个长度为 N 的序列,现选出 M 个点组成一个集合,求这 N 个点到这个集合的最近距离的和是多少。
题解:
状态设计为 dp[i][j] 表示前 i 个点中选出 j 个点的最近距离和是多少,转移显然要枚举上一个选的点在哪里,即:\(dp[i][j]=min(dp[k][j-1]+cost(k+1,i))\)。发现在枚举进行计算时,需要提前计算一个 cost(i,j),表示 [i,j] 这段区间内的点到只有一个被选点的最近距离是多少。cost 的计算只需预处理即可,每次取区间点的中位数。总时间复杂度为\(O(n^3)\)。
代码如下
#include <bits/stdc++.h>
using namespace std;
const int maxn=510;
int n,m,d[maxn],f[maxn][maxn],g[maxn][maxn];
int main(){
scanf("%d%d",&n,&m);
d[1]=0;
for(int i=2;i<=n;i++){
int delta;
scanf("%d",&delta);
d[i]=d[i-1]+delta;
}
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++){
int mid=i+j>>1;
for(int k=i;k<=j;k++){
g[i][j]+=abs(d[mid]-d[k]);
}
}
memset(f,0x3f,sizeof(f));
f[0][0]=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int k=j-1;k<i;k++){
f[i][j]=min(f[i][j],f[k][j-1]+g[k+1][i]);
}
}
}
printf("%d\n",f[n][m]);
return 0;
}
【洛谷P4677】山区建小学的更多相关文章
- P4677 山区建小学|区间dp
P4677 山区建小学 题目描述 政府在某山区修建了一条道路,恰好穿越总共nn个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di 为了提高山区 ...
- luogu P4677 山区建小学 |dp
题目描述 政府在某山区修建了一条道路,恰好穿越总共nnn个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为did_idi(为正整数),其中,0& ...
- NOI题库7624 山区建小学(162:Post Office / IOI2000 POST OFFICE [input] )
7624:山区建小学 Description 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为 ...
- #DP# ----- OpenJudge山区建小学
没有记性.到DP不得不写博了,三天后又忘的干干净净.DP是啥 :-) 一道久到不能再久的题了. OpenJudge 7624:山区建小学 总时间限制: 1000ms 内存限制: 65536k ...
- 7624:山区建小学(划分dp)
7624:山区建小学 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄 ...
- 山区建小学(区间DP)
山区建小学 时间限制: 1 Sec 内存限制: 128 MB提交: 17 解决: 5[提交][状态][讨论版][命题人:quanxing] 题目描述 政府在某山区修建了一条道路,恰好穿越总共m个村 ...
- 【OpenJudge7624】【区间DP】山区建小学
山区建小学 总时间限制: 1000ms 内存限制: 65536kB [描述] 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两 ...
- OpenJudge 7624 山区建小学
在openjudge似乎无法凭题号搜到题...? 总时间限制: 1000ms 内存限制: 65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任 ...
- Openjudge — 7624 山区建小学
问题描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i & ...
- openjudge7624 山区建小学
描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i < ...
随机推荐
- mysql允许外网访问 和修改mysql 账号密码
mysql的root账户,我在连接时通常用的是localhost或127.0.0.1,公司的测试服务器上的mysql也是localhost所以我想访问无法访问,测试暂停. 解决方法如下: 1,修改表, ...
- 前端UI框架搜集
网址:https://blog.csdn.net/will5451/article/details/80652429?utm_source=blogxgwz6 网址:https://www.cnblo ...
- 新增存储用Parted分区并建LVM卷
新增存储用Parted分区并建LVM卷 一,Parted分区 1,parted分区 www.ahlinux.com # parted /dev/sda GNU Parted 2.1 使用 /dev/ ...
- node.js入门经典 初读笔记
2.1 npm是什么 npm(Node Package Manager)是Node.js的包管理器.它允许开发人员在Node.js应用程序中创建.共享并重用模块. 2.3 安装模块 npm insta ...
- SpringCloud解决了哪些问题?
1.与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安全问题. 2.处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信. 3.解决冗余问题 – 冗余问题经常发生在 ...
- P2085 最小函数值
题目链接hhh:https://www.luogu.org/problemnew/show/P2085好嘛,运气真好,刚A掉序列合并,正好碰到这题,可以说是序列合并的升级版了 那么简单说一下思路,首先 ...
- ef Migration 的一些基础命令
cmd ci 命令 dotnet ef migrations add NewColum --新增migrations dotnet ef database update--跟新数据库 dotnet e ...
- zabbix监控java
参考: 官网: https://www.zabbix.com/documentation/4.0/manual/config/items/itemtypes/jmx_monitoring
- Thymeleaf模板中变量报红
在上顶部添加 <!--suppress ThymeleafVariablesResolveInspection --> 或者 <!--suppress ALL --> 都可以解 ...
- Python进阶编程 面向对象
一.面向对象 1.1面向对象的基本格式 class 类名: def 方法名(self): print(123) return 123 def 方法名(self): print(123) return ...