ACM 木材加工问题

这篇博客探讨了一个ACM问题,涉及木材加工优化。问题核心是计算加工木材所需的最少设置时间,其中设置时间取决于木材尺寸。通过贪心算法,通过对木材按特定顺序排序,可以减少设置次数。博主分享了思考过程,强调了不考虑机器工作时间,并提供了程序实现思路,采用结构体存储木材信息并用排序函数解决该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem Description

工厂准备使用机器加工一批木材 。 每根木材有两个参数 l 和 w , 即木材的长度和木材的重量 。 由于只有一台机器 , 所以木材只能一次加工一根 。在加工每根机器前,需要设置一下机器,这需要花费一定的时间,我们称为设置时间。设置时间可以按如下方法计算:
( 1 )机器加工第一根木材时,需要 1分钟的设置时间;
( 2 )加工完一根木材 ( 参数为 l 和 w ) 后 , 如果下一根要加工的木材的参数 l ’与 w ’满足 l<=l ’ 与 w<=w ’,则不需要重新设置即可加工,即设置时间为 0 ;否则需要 1 分钟的设置时间。

Input

第一行包含 1个整数N(1<=N<=5000),表示要加工木材的数量。接下来有 2* N个整数l1 w1 l2 w2 …… ,表示每根木材的长度与重量。
例如:如果有一批木材有 5 根 ,每根的长度和重量分别为 :( 9 ,4 )、( 2 , 5 )、( 1 , 2 )、( 5 , 3 )、( 4 , 1 ), 按 (1 , 2) 、 (2 , 5) 、 (4 , 1) 、 (5 , 3) 、 (9 , 4) 的顺序加工可以达到最少的设置时间 2 分钟

Output

输出一个整数,表示加工完这批木材,至少需要多少分钟的加工时间。

Sample Input

5
9 4 
2 5
1 2
5 3 
4 1

Sample Output

2

思考:此题在于求最少加工时间,加工时间 = 机器设置时间+机器工作时间。但对于这个题目来说,机器的加工时间是很短的,不考虑的,因此这个题目也就是变成了求最小的机器设置次数。第一次加工需要设置1次,当下一次的木材的长度和宽度均大于等于正在加工的木材的长度和宽度时就不用重新设置。因此此题是一道很经典的贪心算法的题目。讲木材进行排序,然后遍历即可,需要注意的地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值