20180610模拟赛T3——书本整理
【问题描述】
小明的书架上放了许多书,为了使书架变得整洁,小明决定整理书架,他将所有书按高度大小排列,这样排了之后虽然整齐了许多,但小明发现,书本的宽度不同,导致书架看上去还是有些凌乱。小明把这个凌乱值定义为相邻两本书的宽度差的绝对值的和。
例如有4本书:
1×2
5×3
2×4
3×1
那么小明将其排列整齐后的顺序是:
1×2
2×4
3×1
5×3
凌乱值就是2+3+2=7。
于是小明决定拿掉其中的k本书,使凌乱值最小,你能帮他求出这个最小值吗?已知每本书的高度都不一样。
【问题输入】
第一行两个数字n和k,代表书总共有n本,要求从中去掉k本。\((l\le n \le 100, 1\le k \le n)\)。下面的n行,每行两个数字表示一本书的高度和宽度,它们均小于200。
【问题输出】
一行一个整数,表示书架的最小凌乱值。
【样例输入】
4 1
1 2
2 4
3 1
5 3
【样例输出】
3
【数据范围】
30%的数据,n≤20。
100%的数据,n≤l00,k<n。
题解
JYT:这是一道简单的动态规划题……
记录去掉\(k\)本比较麻烦,那就记录留下\(n-k\)本吧……
设\(dp[i][j]\)表示到第\(i\)本且必须保留\(i\),保留了\(j\)本的方案数。
容易得到转移方程:
\(dp[i][kk+1] = \min(dp[i][kk+1], dp[j][kk] + abs(book[i].kuan - book[j].kuan))\)
book[i].kuan表示第\(i\)本书的宽度。
代码如下:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
#define fill(a) memset(a, 0x3f, sizeof(a))
const int maxn = 105;
int dp[maxn][maxn];
struct BOOK
{
int quan, h, kuan;
inline bool operator < (const BOOK& other) const
{
return h < other.h;
}
} book[maxn];
const int inf = 0x3f3f3f3f;
int main()
{
freopen("book.in", "r", stdin);
freopen("book.out", "w", stdout);
int n, k;
scanf("%d%d", &n, &k);
for(int i = 1; i <= n; ++i)
scanf("%d%d", &book[i].h, &book[i].kuan);
k = n-k;
sort(book+1, book+1+n);
fill(dp);
for(int i = 1; i <= n; ++i)
dp[i][1] = 0;
for(int i = 2; i <= n; ++i)
for(int j = 1; j < i; ++j)
for(int kk = 1; kk < k; ++kk)
dp[i][kk+1] = min(dp[i][kk+1], dp[j][kk] + abs(book[i].kuan - book[j].kuan));
int ans = inf;
for(int i = 1; i <= n; ++i)
ans = min(ans, dp[i][k]);
printf("%d", ans);
return 0;
}
20180610模拟赛T3——书本整理的更多相关文章
- 体育成绩统计——20180801模拟赛T3
体育成绩统计 / Score 题目描述 正所谓“无体育,不清华”.为了更好地督促同学们进行体育锻炼,更加科学地对同学们进行评价,五道口体校的老师们在体育成绩的考核上可谓是煞费苦心.然而每到学期期末时, ...
- 20180610模拟赛T1——脱离地牢
Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...
- 20180520模拟赛T3——chess
[问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\) ...
- 2016.10.30 NOIP模拟赛 day2 PM 整理
满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...
- 2016.10.30 NOIP模拟赛 day2 AM 整理
题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分 2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...
- 2016.10.29 NOIP模拟赛 PM 考试整理
300分的题,只得了第三题的100分. 题目+数据:链接:http://pan.baidu.com/s/1o7P4YXs 密码:4how T1:这道题目存在着诸多的问题: 1.开始的序列是无法消除的( ...
- 20161005 NOIP 模拟赛 T3 解题报告
subset 3.1 题目描述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 1. add s 在集合中加入数字 s. 2. del s 在集合中删除数字 s.保证 s 存在 3. c ...
- ztz11的noip模拟赛T3:评分系统
代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- 2019.10.02模拟赛T3
题目大意: 设$S(n,m)$为第二类斯特林数,$F_i$表示斐波那契数列第$i$项. 给定$n,R,K$,求$\sum\limits_{i=1}^{n}(\sum\limits_{m=1}^{R}F ...
随机推荐
- [LeetCode] 617. Merge Two Binary Trees 合并二叉树
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of t ...
- [BZOJ1852] [MexicoOI06]最长不下降序列
[BZOJ1852] [MexicoOI06]最长不下降序列 额我也不知道是不是水过去的...和网上的另一篇题解对拍过了,但是拍不出来... 经过和神仙的讨论基本可以确定是对的了 考虑如下贪心 (我将 ...
- 开源组件websocket-sharp中基于webapi的httpserver使用体验
一.背景 因为需要做金蝶ERP的二次开发,金蝶ERP的开放性真是不错,但是二次开发金蝶一般使用引用BOS.dll的方式,这个dll对newtonsoft.json.dll这个库是强引用,必须要用4.0 ...
- idea之导入Eclipse Maven项目
Idea之导入Eclipse Maven项目:https://blog.csdn.net/qq_33442160/article/details/81876428参考上述链接即可,这里不再赘述.
- C# HTTP系列3 HttpWebRequest.ContentType属性
系列目录 [已更新最新开发文章,点击查看详细] 获取或设置请求的 Content-type HTTP 标头的值.默认值为null. 常见的请求内容类型为以下几种: /// <summar ...
- SpringBoot之RESTful风格
SpringBoot之RESTful风格 1.RESTful介绍 RESTful是一种软件架构风格,一种时尚! RESTful架构风格规定,数据的元操作,即CRUD(create, read, upd ...
- mysql备份、还原数据库(命令行)
这里记录下MySQL如何通过命令行备份和还原数据库. 简单的三个步骤 方法很简单,可以分为三个步骤: 1.打开cmd控制台(命令行). 2.输入相应命令完成备份还原操作. 3.关闭cmd控制台. 就和 ...
- BCryptPasswordEncoder 判断密码是否相同
加密 BCryptPasswordEncoder encode = new BCryptPasswordEncoder(); encode.encode(password); 比较 matches(C ...
- 参加AWS技术峰会的收获与思考
7月31日,我参加了AWS 技术峰会2019北京站的会议. 从厦门到帝都,奔赴千里,只为一场技术盛宴,我想记录一些收获和思考,才能不负此行. 大会议程全天,上午是主题演讲和行业解决方案展示,下午是技术 ...
- Mysql系列(十一)—— 性能分析慢查询日志
转载自:http://www.cnblogs.com/kerrycode/p/5593204.html 慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响 ...