题目描述

Frank是一个非常喜爱整洁的人。他有一大堆书和一个书架,想要把书放在书架上。书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上。但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐。于是他决定从中拿掉k本书,使得书架可以看起来整齐一点。

书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和。例如有4本书:

1×21 \times 21×2
5×35 \times 35×3
2×42 \times 42×4
3×13 \times 13×1
那么Frank将其排列整齐后是:

1×21 \times 21×2
2×42 \times 42×4
3×13 \times 13×1
5×35 \times 35×3
不整齐度就是2+3+2=72+3+2=72+3+2=7

已知每本书的高度都不一样,请你求出去掉k本书后的最小的不整齐度。

输入输出格式

输入格式:

第一行两个数字nnn和kkk,代表书有几本,从中去掉几本。(1≤n≤100,1≤k<n1 \le n \le 100, 1 \le k<n1≤n≤100,1≤k<n)

下面的nnn行,每行两个数字表示一本书的高度和宽度,均小于200200200。

保证高度不重复

输出格式:

一行一个整数,表示书架的最小不整齐度。

输入输出样例

输入样例#1: 复制

4 1
1 2
2 4
3 1
5 3
输出样例#1: 复制

3

这个是一个dp,这个应该可以不是特别难的判断出来,但是这个定义不是很好去定义,我又没有想出来,最后看题解定义的
dp数组定义为前i本书选了j本书,且i为最后结束的那本书,然后之后的转移就比较好转移,就往下一本书要不要,
要的话是接在那个之后最好,所以这里有三重循环,我虽然意识到了,但是呢,没有写出来,最后还是借助题解写完的,
这个要注意的就是有些前i个选不出j个,因为可能i<j。注意一下这里就好了。
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn = 110;
int dp[maxn][maxn];//表示从前面i本书中选j本,且以第i本为结束的最小整齐度。
struct node
{
int h, d;
}exa[maxn]; bool cmp(node a, node b)
{
return a.h < b.h;
} int main()
{
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &exa[i].h, &exa[i].d);
}
sort(exa + 1,exa + 1 + n, cmp);
for (int i = 0; i <= n; i++)
{
dp[i][1] = 0;
}
for (int i = 1; i <= n; i++)
{
for (int j = 2; j <= min(n-k,i); j++)
{
dp[i][j] = inf;
for (int k = j-1; k <=i-1 ; k++)
{
dp[i][j] = min(dp[k][j - 1] + abs(exa[i].d - exa[k].d), dp[i][j]);
}
}
}
int ans = inf;
for (int i = n-k; i <= n; i++) ans = min(dp[i][n - k], ans);
printf("%d\n", ans);
return 0;
}

  


最新文章

  1. (转)MySQL索引原理及慢查询优化
  2. 简单方便的div垂直居中。
  3. 微信分享调用 -- c#篇
  4. 1002. A+B for Polynomials
  5. Genymotion模拟器环境搭建中的各种坑,终极解决办法
  6. ServletContext中常用方法(getRsource和getResourceAsStream)
  7. 几种常见的排序方法(C语言实现)
  8. 连接Excel时出现未指定的错误
  9. JS和利用openssl的object C加密得到相同的aes加密密文
  10. 转 使用SQL从AWR收集数据库性能变化趋势
  11. 36、IO模型与socketserver实现并发
  12. Python3 的描述符--完整例子详细解释
  13. HDFS-JavaAPI
  14. 16 级高代 II 思考题九的七种解法
  15. python学习笔记之函数的参数
  16. DataInputStream FileInputStream 区别
  17. Try Before Choosing
  18. MPP、SMP、NUMA概念介绍
  19. Vue.js——60分钟webpack项目模板快速入门
  20. windows之tracert命令

热门文章

  1. 依然是关于我空间那篇申请的日志《JavaScript axError:Unexpected token ILLEGAL 很简单的代码&hellip;&hellip;》
  2. devDependencies与dependencies (转载)
  3. 49.Linux-wpa_cli使用之WIFI开启,扫描热点,连接热点,断开热点,WIFI关闭(49)
  4. 【Java并发编程】23、ConcurrentHashMap原理分析(1.7和1.8版本对比)
  5. Netty 系列六(编解码器).
  6. C#设计模式之十二代理模式(Proxy Pattern)【结构型】
  7. hive -f 传递参数
  8. DOM技术
  9. Unity3D手机斗地主游戏开发实战(04)_出牌判断大小
  10. python地理处理包——Shapely介绍及用户手册