[luoguP1103] 书本整理(DP)
以 去掉多少个 为阶段不好做。
去掉 k 个也可以变成选 n - k 个
f[i][j] 表示前 i 个数中 选 j 个的最优解,a[i] 必选
f[i][j] = min(f[i][j], f[k][j - 1] + abs(b[k] - b[i])) (2 <= j <= min(i, n - m), j - 1 <= k < i)
——代码
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- const int MAXN = , INF = ~( << );
- int n, m, ans = INF;
- int f[MAXN][MAXN];
- struct node
- {
- int a, b;
- }p[MAXN];
- inline int read()
- {
- int x = , f = ;
- char ch = getchar();
- for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -;
- for(; isdigit(ch); ch = getchar()) x = (x << ) + (x << ) + ch - '';
- return x * f;
- }
- inline bool cmp(node x, node y)
- {
- return x.a < y.a;
- }
- inline int min(int x, int y)
- {
- return x < y ? x : y;
- }
- inline int abs(int x)
- {
- return x < ? -x : x;
- }
- int main()
- {
- int i, j, k;
- n = read();
- m = n - read();
- for(i = ; i <= n; i++) p[i].a = read(), p[i].b = read();
- std::sort(p + , p + n + , cmp);
- for(i = ; i <= n; i++)
- for(j = ; j <= min(i, m); j++)
- {
- f[i][j] = INF;
- for(k = j - ; k < i; k++)
- f[i][j] = min(f[i][j], f[k][j - ] + abs(p[k].b - p[i].b));
- }
- for(i = m; i <= n; i++) ans = min(ans, f[i][m]);
- printf("%d\n", ans);
- return ;
- }
[luoguP1103] 书本整理(DP)的更多相关文章
- Java实现 洛谷 P1103 书本整理
题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所 ...
- 洛谷 P1103 书本整理(动规)
洛谷 P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发 ...
- P1103 书本整理
P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由 ...
- dp P1103 书本整理 洛谷
题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所 ...
- 20180610模拟赛T3——书本整理
[问题描述] 小明的书架上放了许多书,为了使书架变得整洁,小明决定整理书架,他将所有书按高度大小排列,这样排了之后虽然整齐了许多,但小明发现,书本的宽度不同,导致书架看上去还是有些凌乱.小明把这个凌乱 ...
- luogu P1103 书本整理
题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所 ...
- 洛谷P1103 书本整理
题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的 书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同, ...
- 洛谷——P1103 书本整理
https://www.luogu.org/problem/show?pid=1103 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所 ...
- 2017清北学堂(提高组精英班)集训笔记——动态规划Part3
现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它 ...
随机推荐
- 清北考前刷题day2早安
/* 做法一:按h sort一遍,对于一段区间[i,j],高度花费就是h[j]-h[i] 然后枚举区间,把区间内C排序,一个一个尽量选即可. n^3logn 标算:n^3 dp 高度排序,保证从前往后 ...
- loadrunner中get和post请求
loadrunner中可以使用web_url和web_link发送get请求,使web_submit_form和web_sumbit_data发送post请求. 有什么不同呢?推荐使用哪一个? web ...
- P2973 [USACO10HOL]赶小猪
跟那个某省省选题(具体忘了)游走差不多... 把边搞到点上然后按套路Gauss即可 貌似有人说卡精度,$eps≤1e-13$,然而我$1e-12$也可以过... 代码: #include<cst ...
- WebSphere Application Server切换JAVA SDK版本
最近在Windows Server 2008 R2服务器中搭建了一套IHS+WAS8.5集群环境,测试一个简单的demo应用没有问题,可是在部署正式应用时总是报类版本错误.换了好几个JDK对项目进行编 ...
- mysqli 进一步分析
1. 一.mysql与mysqli的概念相关: 1.mysql与mysqli都是php方面的函数集,与mysql数据库关联不大. 2.在php5版本之前,一般是用php的mysql函数去驱动mysql ...
- jQuery学习笔记(3)-操作jQuery包装集的函数
一.前言 在使用jQuery选择器获取到jQuery包装集后,我们就要对这些包装集进行各种操作 二.创建新的元素 1.使用HTMLDOM创建元素 (1)什么是DOM 当网页被加载时,浏览器会创建页面的 ...
- CF897C Nephren gives a riddle
思路: 递归. 比赛的时候脑抽了len[]没算够,wa了几次. 实现: #include <bits/stdc++.h> using namespace std; using ll = l ...
- JavaScript中逻辑运算符的使用
逻辑运算符用于对一个或多个布尔值进行逻辑运算.在JavaScript中有3个逻辑运算符,如下表所示. 运算符 描述 示例 && 逻辑与 a && b //当a和b都为 ...
- NX自动出图 效果图
- Git——github高级
分支管理 分支不是越多越好,只求一个稳定的分支,即master不要轻易去更改 对应master要有一个开发者分支,保证mater分支的稳定性 所有的功能都在开发者分支上进行 在所有功能开发后新建发布分 ...