#10258. 砍树最大高度
砍树最大高度
🪵【砍树最大高度】
🧩 题目描述:
伐木工人米尔科需要收集至少 M
米的木材。
他可以将伐木机的锯片升到某个高度 H
(单位:米),然后砍掉所有高于 H
的树木部分(低于等于 H
的部分不会被砍)。
例如:
若树高为 20
,锯片高度为 15
,则可得到 20 - 15 = 5
米木材。
目标是:找到最大的 H
,使得砍下的木材总长度 ≥ M
米。
📥 输入格式:
第一行:两个整数 N 和 M,分别表示树的数量和需要的木材长度。
第二行:N 个整数,表示每棵树的高度。
1 ≤ N ≤ 10⁶
1 ≤ M ≤ 2×10⁹
- 树高不超过
10⁹
,且木材总长度保证 ≥ M
📤 输出格式:
一个整数,表示最大锯片高度 H。
🎯 输入样例:
5 20
4 42 40 26 46
✅ 输出样例:
36
🧠 思路解析:
- 设置一个二分区间
[l, r]
,表示锯片高度 H 的取值; - 编写
check(H)
函数,判断是否能砍出 ≥ M 的木材; - 随着 H 升高,砍到的木材会减少,满足单调性:
- H 越小 → 木材越多(check(H) = true)
- H 越大 → 木材越少(check(H) = false)
✅ 最终答案:
36
(这是使木材总量刚好 ≥ 20 米的最大 H)