#P10240. [THUSC 2021] 搬东西

[THUSC 2021] 搬东西

题目描述

nn 件物品,编号为 11nn,编号为 ii 的物品重量记为 aia_i,是一个正整数。

只有一个可用的箱子,它最大可容纳的重量是一个正整数 mm。物品被分批搬运,每批搬走其中一部分,直至所有物品都被搬走。每个批次被搬走的物品是当时剩下物品的一个子集,按如下策略选择:

选择重量之和不超过 mm 且包含物品数量最多的方案,如果有多种数量最多的方案,则将被选择的物品编号从小到大排列成一个序列,选择使这个序列字典序最大的方案。

请计算出依此策略会分成多少批次来搬运。

输入格式

输入共有两行,第一行包含两个空格分隔的正整数 n,mn, m,第二行包含 nn 个空格隔开的正整数,依次为 nn 个物品的重量 aia_i

输出格式

输出一个正整数,表示完成搬运所需的批次数。

11 10
3 1 3 8 4 3 2 1 2 1 1

4

见附件中的 2.in。
见附件中的 2.ans。
见附件中的 3.in。
见附件中的 3.ans。

提示

【样例解释 #1】

第一次最多可以搬运 66 件物品,编号序列为 6,7,8,9,10,116, 7, 8, 9, 10, 11

第二次最多可以搬运 33 件物品,这时有 44 种数量最大的方案:

  • 编号序列 1,2,31, 2, 3
  • 编号序列 1,2,51, 2, 5
  • 编号序列 1,3,51, 3, 5
  • 编号序列 2,3,52, 3, 5

选择字典序最大的 2,3,52, 3, 5

第三次最多可以搬运 11 件物品,编号序列为 44

第四次最多可以搬运 11 件物品,编号序列为 11

【子任务】

子任务 分值 nn mm
11 55 n20n \leq 20 m100m \leq 100
22 2525 n500n \leq 500 m109m \leq 10^9
33 2020 n3000n \leq 3000
44 1010 n50000n \leq 50000 m10m \leq 10
55 4040 m109m \leq 10^9

全部数据满足:

  • 1n500001 \leq n \leq 500001m1091 \leq m \leq 10^9
  • 所有物品的重量满足 1aim, i=1n1 \leq a_i \leq m, \ i=1 \dots n

【提示】

对于两个等长且不相同的序列 aabb,如果序列中的元素可以比较大小,那么 aabb 的字典序大小关系如下定义:从前向后找到第一个位置 ii 使 aibia_i \neq b_i,若 ai<bia_i < b_ia<ba<b,否则 ai>bia_i>b_ia>ba>b

在本题中,aabb 是两个搬运方案中涉及的物品编号序列,元素之间的大小关系指的就是编号之间的整数比较。

题目使用协议

来自 清华大学 2021 年全国优秀中学生信息学体验营 (THUSC 2021)。

以下『本仓库』皆指 THUSC 2021 官方仓库(https://gitlink.org.cn/thusaa/thusc2021

  1. 任何单位或个人都可以免费使用或转载本仓库的题目;
  2. 任何单位或个人在使用本仓库题目时,应做到无偿、公开,严禁使用这些题目盈利或给这些题目添加特殊权限;
  3. 如果条件允许,请在使用本仓库题目时同时提供数据、标程、题解等资源的获取方法;否则,请附上本仓库地址。
  4. 清华大学计算机系保留一切权利。