AT_abc169_f [ABC169F] Knapsack for All Subsets

题目描述

给定一个长度为 $N$ 的正整数序列 $A_1, A_2, \ldots, A_N$ 和一个正整数 $S$。 对于集合 $\{1, 2, \ldots, N\}$ 的所有非空子集 $T$,定义 $f(T)$ 如下: - $f(T)$ 为 $T$ 的所有非空子集 $\{x_1, x_2, \ldots, x_k\}$ 中,满足 $A_{x_1} + A_{x_2} + \cdots + A_{x_k} = S$ 的子集个数。 所有可能的 $T$ 有 $2^N-1$ 种,请计算所有 $T$ 的 $f(T)$ 之和。由于答案可能非常大,请输出其对 $998244353$ 取模的结果。

输入格式

输入以以下格式从标准输入给出。 > $N$ $S$ $A_1$ $A_2$ $\ldots$ $A_N$

输出格式

请输出所有 $T$ 的 $f(T)$ 之和对 $998244353$ 取模的结果。

说明/提示

### 限制条件 - 输入均为整数。 - $1 \leq N \leq 3000$ - $1 \leq S \leq 3000$ - $1 \leq A_i \leq 3000$ ### 样例解释 1 可以分别计算如下,和为 $6$。 - $f(\{1\}) = 0$ - $f(\{2\}) = 0$ - $f(\{3\}) = 1$($\{3\}$ 这一个子集) - $f(\{1, 2\}) = 1$($\{1, 2\}$ 这一个子集) - $f(\{2, 3\}) = 1$($\{3\}$ 这一个子集) - $f(\{1, 3\}) = 1$($\{3\}$ 这一个子集) - $f(\{1, 2, 3\}) = 2$($\{1, 2\}$、$\{3\}$ 这两个子集) 由 ChatGPT 4.1 翻译