2323. 松鼠特攻队的“独木舟”奇袭

1000ms 256MB 简单 贪心算法
题目描述
在森林战争的关键时刻,松鼠特攻队决定通过一个无人防守的湖泊,划船偷袭敌军后方。 现在岸边一共有 $n$ 名精锐松鼠士兵,指挥官哈利已经称好了每名士兵的体重。然而现场只有一艘简陋的独木舟,其载重量非常有限(最大载重为 $W$)。由于敌军巡逻非常严密,这艘船**只能运送一次**,且必须在不超重的前提下,尽可能多地运送士兵过湖,以便在对岸形成人数优势。 请你编写程序帮哈利计算一下,这艘独木舟一次最多能运送多少名士兵?
输入格式
- 第一行包含两个正整数 $n$ 和 $W$ ($n, W < 2000$),分别表示士兵的数量和独木舟的最大载重量。 - 第二行包含 $n$ 个正整数,表示每名士兵的体重(每名士兵体重 $< 300$)。
输出格式
- 输出一行一个整数,表示独木舟最多能装载的士兵人数。
样例 1
输入 (Input)
5 11
7 2 6 4 5
输出 (Output)
3
样例说明
独木舟最大载重为 11。将士兵体重按从小到大排序得到:`2 4 5 6 7`。 - 选择最轻的 3 名士兵:$2 + 4 + 5 = 11$,刚好不超重。 - 如果尝试装载 4 名士兵,则最小总重为 $2 + 4 + 5 + 6 = 17 > 11$,超重。 - 因此最多运送 3 名士兵。
- $n, W < 2000$ - 单个士兵体重 $< 300$ - **算法提示**: 这是一个典型的**贪心算法**问题。为了在有限的载重内装下更多的人,我们应该优先选择体重最轻的士兵。 1. 将所有士兵的体重从小到大排序。 2. 从体重最轻的士兵开始累加,直到总重量超过船的载重量为止。
自测终端 stdin → stdout
输入 stdin
CtrlShiftEnter
输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字