uoj#P932. 【清华集训2024】绝顶之战
【清华集训2024】绝顶之战
有一个长度为 $m$ 的一维空间,还有 $n$ 个物品,第 $i$ 个物品的长度为 $a_i$。现在按照编号从小到大的顺序依次将物品放入空间中,对于第 $i$ 个物品:
- 如果当前空间中存在一段连续的长度至少为 $a_i$ 的空余,则你必须将第 $i$ 个物品放入一段连续的长度为 $a_i$ 的空余空间中。
- 否则,第 $i$ 个物品无法被放入,跳过它。
你需要输出:按照编号从小到大的顺序考虑完所有物品后,所有可能的空间占用长度,它的定义是所有被放入空间的物品的长度之和。
输入格式
输入的第一行两个整数 $m,n$,分别表示空间长度和物品个数。
第二行 $n$ 个整数 $a_1,\cdots,a_n$,依次表示每个物品的长度。
输出格式
输出两行,第一行一个整数 $S$,表示可能的空间占用长度的数量。
第二行 $S$ 个整数 $b_1,\ldots,b_S$,从小到大输出所有可能的空间占用长度。
注意,你需要保证 $b_1,\ldots,b_S$ 不重不漏。
8 4
3 4 1 2
4
4 6 7 8
下图分别展示了空间占用长度为 $4,6,7,8$ 的一种可能方式:
见题目目录下的 2.in 与 2.ans。
见题目目录下的 2.in 与 2.ans。
数据范围
对于所有测试数据,$1\leq m,a_i\leq 10^{16}$,$\ 1\leq n\leq 14$。
| 子任务编号 | $n=$ | $m,a_i\le$ | 分数 |
|---|---|---|---|
| $1$ | $5$ | $10$ | $15$ |
| $2$ | $2$ | $10^{16}$ | $5$ |
| $3$ | $3$ | $10^{16}$ | $5$ |
| $4$ | $5$ | $10^{16}$ | $5$ |
| $5$ | $7$ | $10^{16}$ | $5$ |
| $6$ | $9$ | $10^{16}$ | $5$ |
| $7$ | $11$ | $10^{16}$ | $10$ |
| $8$ | $12$ | $10^{16}$ | $10$ |
| $9$ | $13$ | $10^{16}$ | $10$ |
| $10$ | $14$ | $10^{16}$ | $30$ |
时间限制:$\texttt{1s}$
空间限制:$\texttt{512MB}$