#P15773. [JAG 2025 Summer Camp #2] Count Unique Packing

[JAG 2025 Summer Camp #2] Count Unique Packing

说明

你在“容器装箱可识别性中心”工作,研究容器装箱方案的唯一性。

给定 NN 件物品。第 ii 件物品有一个正整数重量 AiA_i1iN1 \leq i \leq N)。

你考虑将物品的一个(非空)子集 S{1,2,,N}S \subseteq \{1, 2, \ldots, N\} 装入容器。你可以使用任意多个非空容器(不允许使用空容器)。固定一个正整数 ww 表示每个容器的容量。SS 的一个有效装箱是将 SS 中的物品分配到容器中的一种方案,它必须满足以下所有条件:

  • 覆盖性SS 中的每件物品恰好被放入一个容器。
  • 容量限制:每个容器中物品的总重量不超过 ww
  • 不可合并性:对于任意两个不同的容器 AABBAABB 中所含物品的总重量严格大于 ww(即,在不违反容量 ww 的前提下,任意两个容器都无法合并成一个容器)。

容器是不可区分的,而物品是互不相同的(即使某些物品重量相同)。两种装箱方案被认为是相同的,当且仅当它们诱导出 SS 的相同划分;等价地说,对于任意不同的 i,jSi, j \in S,物品 iijj 在一种装箱方案中位于同一个箱子,当且仅当它们在另一种装箱方案中也位于同一个箱子。

对于一个固定的 ww,如果一个子集 SS 恰好存在一种满足所有条件的有效装箱方案,则称 SS唯一可装箱的

给定一个整数 WW。令 f(w)f(w)w=1,2,,Ww = 1, 2, \ldots, W)表示容量为 ww 时唯一可装箱的非空子集的数量。对于每个 w=1,2,,Ww = 1, 2, \ldots, W,输出 f(w)f(w)998244353998244353 取模的结果。换句话说,对于每个 w=1,2,,Ww = 1, 2, \ldots, W,定义

$$f(w) = \#\{S \subseteq \{1, 2, \ldots, N\} \mid S \text{ 是非空的,且对于容量 } w \text{ 是唯一可装箱的}\}.$$

输出 WW 个整数;对于每个 w=1,2,,Ww = 1, 2, \ldots, W,输出 f(w)f(w)998244353998244353 取模的结果。

输入格式

输入包含一个测试用例,格式如下。

$$\begin{aligned} & N \ W \\ & A_1 \ A_2 \ \cdots \ A_N \end{aligned}$$

第一行包含两个整数 NN1N50001 \leq N \leq 5000)和 WW1W50001 \leq W \leq 5000),分别表示物品的数量和容量参数 ww 的上界(即需要考虑的最大容量)。第二行包含 NN 个正整数 A1,A2,,ANA_1, A_2, \ldots, A_N1AiW1 \leq A_i \leq W)。每个 AiA_i 表示物品 ii 的重量。

输出格式

在一行中输出 WW 个整数,以空格分隔:对于每个 w=1,2,,Ww = 1, 2, \ldots, W,第 ww 个整数是 f(w)f(w)998244353998244353 取模的结果(容量为 ww 时的答案)。

4 4
1 3 2 4
1 3 7 13
3 9
9 1 4
1 1 1 3 3 3 3 3 7
2 2
2 2
0 3

提示

翻译由 DeepSeek V3.2 完成