动态规划——木棍加工

2023-05-16

题目链接

题目描述

一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的。棍子可以被一台机器一个接一个地加工。机器处理一根棍子之前需要准备时间。准备时间是这样定义的:

第一根棍子的准备时间为1分钟;

如果刚处理完长度为L,宽度为W的棍子,那么如果下一个棍子长度为Li,宽度为Wi,并且满足L>=Li,W>=Wi,这个棍子就不需要准备时间,否则需要1分钟的准备时间;

计算处理完n根棍子所需要的最短准备时间。比如,你有5根棍子,长度和宽度分别为(4, 9),(5, 2),(2, 1),(3, 5),(1, 4),最短准备时间为2(按(4, 9)、(3, 5)、(1, 4)、(5, 2)、(2, 1)的次序进行加工)。

输入格式

第一行是一个整数n(n<=5000),第2行是2n个整数,分别是L1,W1,L2,w2,…,Ln,Wn。L和W的值均不超过10000,相邻两数之间用空格分开。

输出格式

仅一行,一个整数,所需要的最短准备时间。

输入输出样例

输入

5
4 9 5 2 2 1 3 5 1 4

输出

2

分析

先对长度从长到短进行排序,然后对宽度求最长上升子序列即可。

#include<bits/stdc++.h>
using namespace std;
const int maxn=5010;
int n,dp[maxn];

struct node{
	int l,w;
}f[maxn];

bool cmp(node a,node b)
{
	if(a.l==b.l){
		return a.w>b.w;
	}
	return a.l>b.l;
}

int main()
{
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>f[i].l>>f[i].w;
	}
	sort(f,f+n,cmp);
	dp[0]=f[0].w;
	int cnt=0;
	for(int i=1;i<n;i++){
		if(dp[cnt]<f[i].w){
			dp[++cnt]=f[i].w;
		}
		else{
			*lower_bound(dp,dp+cnt,f[i].w)=f[i].w;
		}
	}
	cout<<cnt+1<<endl;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态规划——木棍加工 的相关文章

随机推荐

  • CentOS 7 安装PostgreSQL

    原文 xff1a https blog csdn net wlwlwlwl015 article details 53256358 下载 在postgresql的官方即可找到源码文件目录 xff0c 地址如下 xff1a https www
  • 使用sudo apt-get update总是报错软件包缓存文件损坏

    命中 1 http cn archive ubuntu com ubuntu xenial InRelease 获取 2 http cn archive ubuntu com ubuntu xenial updates InRelease
  • CSP202112 第四题 磁盘文件操作(C++ 25分)

    使用了tuple xff0c 但这么使用的话 xff0c 只能符合前25 的数据 xff0c 即m小于等于10000 include lt bits stdc 43 43 h gt include lt tuple gt using nam
  • 安装Rust(Windows 10 与 CentOS7)

    注 xff1a 安装及下载需要科学上网 官网下载地址 xff1a Install Rust Rust Programming Language Window安装Rust 0 前提条件 安装C 43 43 编译工具 xff08 如下图所示 x
  • 【辅助驾驶】透视变换、仿射变换(包含鸟瞰图、俯视图、正视图)[3]——汽车全景环视系统

    一 效果 4个不同方向的相机 xff0c 将其鸟瞰变化后 xff0c 进行拼接 xff0c 得到车辆及周围区域的鸟瞰视角图 二 处理流程 1 相机的标定和图片校正 xff1b 2 图像拼接 xff1b 3 拼接缝消除 xff1b 4 移植到
  • 玩客云刷Armbian详细教程

    网上放出了很多关于玩客云的刷机玩法 xff0c 有电视盒子 复古游戏机 Armbian Linux操作系统搭建自己的私有云 可玩性还是很高的 xff0c 而且价格还便宜就入手了一台 下面记录一下我的玩客云折腾之旅 xff0c 机器刷了Arm
  • 原创分析| 入门或者转行音视频,应该要怎么做?

    要不要从事音视频开发 这一两年因为该死的疫情 xff0c 让短视频 超高清视频和实时音视频反而成为需求风口 我的看法当然是觉得音视频这个行业还可以 xff0c 而且从我自己的观察来看 xff0c 做音视频的现在普遍年龄都在 30 43 了
  • while(a<b<c)怎么理解?

    首先计算a lt b 是否成立 xff0c 再计算1 lt c或 0 lt c span class hljs keyword int span main span class hljs keyword int span a 61 span
  • C判断字符输入是否为指定字符串

    题目要求 xff1a 设定口令为 yulingxi 请求输入 xff0c 如果错误循环输入直至正确为止 1 xff0c 偷懒用strcmp 的做法 xff1a span class hljs preprocessor define CRT
  • 犀哥教你用C写贪吃蛇

    一 xff0c 涉及知识点 xff1a 结构体链表 xff0c 动态分配内存 xff0c 键盘输入检测 xff0c 设置光标 二 xff0c 实现逻辑 1 xff0c 可以设置光标 xff0c 就能实现制定位置打印制定符号 2 xff0c
  • C++类的默认继承方式为保护继承

    二义性 xff1a 就是指取值不明确 xff0c 比如下面例子中的D3同时继承与父类D1 D2 而两个父类当中都有成员变量k 此时如果想要用D3的对象 xff0c 访问父类的成员变量K xff0c 则需要加上相应的域名才能访问 并且只有在继
  • 学习笔记(三) 解决Python3.X pycharm中报No module named 'PIL'

    PIL全称Python Imaging Library xff0c 翻译过来就是Python图像处理库 如果报了标题的错误 xff0c 说明在程序涉及图片时少了这个库 解决方法很简单 xff1a 打开命令行 xff1a pip instal
  • 解释一下为啥负数的取值范围比整数要多一个

    这里有一个0值的差别 以最简单的单字节char型为例 占8位 xff0c 最高位为符号位 这样0值就有了 0000 0000 正零 1000 0000 负零 两种 从数学角度上 xff0c 是没区别的 xff0c 可是用两种形式表示一个数
  • 位运算符打印补码的问题

    int a i scanf d amp a getchar char data 61 1 lt lt 7 for i 61 0 i lt 8 i 43 43 data amp a putchar 1 putchar 0 a lt lt 61
  • socket网络编程的一些基础知识

    目录 xff1a 1 什么是套接字 xff1f 2 Internet 套接字的两种类型 3 网络理论 4 结构体 5 本机转换 6 IP 地址和如何处理它们 7 socket 函数 8 bind 函数 9 connect 函数 10 lis
  • JS如何处理超过32位的整数的位运算

    这个问题是已经毕业的学员李佳问到的 本想在网上查一下给他个答案省事 转念一想 如果网上如果他能在网上查到看的明白的方案应该不至于来问我 索性自己给他解一解 因为貌似这个问题还是有点意思的 首先 要知道为什么这个问题会成为一个问题 这里就不得
  • OpenStack环境部署

    这里写目录标题 虚拟机资源信息部署思路资源规划基础环境配置关闭防火墙和系统按群机制 xff0c 修改主机名安装基础环境依赖包VMnet1网卡配置参数 配置主机映射文件三台节点做免交互配置DNS xff0c 配置控制节点时间同步 系统环境配置
  • Mac OSX 打开原生自带读写NTFS功能[10.11.6 work, 10.14.4不work]

    文章目录 一 放开mac的Rootless机制二 查看磁盘的Volume Name三 更改 etc fstab文件四 做快捷方式五 隐藏桌面移动硬盘快捷方式 xff0c 拖入Finder边栏环境 最近买了一个移动硬盘 xff0c 发现在ma
  • 01. Ubuntu下安装nvidia显卡驱动(安装方式简单)

    文章目录 第一步 获取显卡型号第二步 查看GTX970M显卡驱动第三步 查询支持GTX970M显卡的显卡驱动的其他驱动版本第四步 安装第五步 测试nvidia driver是否安装成功环境参考资料 Ubuntu下安装nvidia显卡驱动 x
  • 动态规划——木棍加工

    题目链接 题目描述 一堆木头棍子共有n根 xff0c 每根棍子的长度和宽度都是已知的 棍子可以被一台机器一个接一个地加工 机器处理一根棍子之前需要准备时间 准备时间是这样定义的 xff1a 第一根棍子的准备时间为1分钟 xff1b 如果刚处