#AT1884. H - Cabbage Master
H - Cabbage Master
H - 卷心菜大师
分数:$600$ 分
问题描述
卷心菜农场主高桥种了 $N$ 个品牌的卷心菜,分别称为品牌 $1$ 到品牌 $N$。他有 $A_i$ 个属于品牌 $i$ 的卷心菜 $(1 \leq i \leq N)$。这里,所有的卷心菜都是可区分的。
他有 $M$ 个客户,分别称为公司 $1$ 到公司 $M$。公司 $j$ $(1 \leq j \leq M)$ 要订购 $B_j$ 个卷心菜。
不同的公司接受不同品牌的卷心菜。对于每一对 $i, j$ $(1 \leq i \leq N, 1 \leq j \leq M)$,
- 若 $c_{i, j} = 1$,品牌 $i$ 的卷心菜可以运送给公司 $j$;
- 若 $c_{i, j} = 0$,品牌 $i$ 的卷心菜不能运送给公司 $j$。
如果高桥成功地决定了运送卷心菜的地方,使得每个公司 $j$ $(1 \leq j \leq M)$ 至少收到 $B_j$ 个卷心菜,他将被称为卷心菜大师。
决定要吃掉哪些卷心菜,以使高桥无论如何都无法成为卷心菜大师,素昧的决定要吃最少量的卷心菜。
输出素昧要吃掉的卷心菜的数量以及素昧选择要吃的卷心菜的方式的个数,对 $998244353$ 取模。
当有一个卷心菜在某种方式下被吃掉但在另一种方式下没有被吃掉时,认为两种方式是不同的。这里,要记住,即使它们是同一品牌的,任何两个卷心菜都是可区分 的。
约束
- $1 \leq N \leq 20$
- $1 \leq M \leq 10^4$
- $1 \leq A_i \leq 10^5$
- $1 \leq B_j \leq 10^5$
- $c_{i, j} \in \lbrace 0, 1 \rbrace$
- 对于每一个 $1 \leq j \leq M$,存在 $1 \leq i \leq N$,使得 $c_{i, j} = 1$。
- 输入中的所有值都是整数。
输入
输入使用以下格式从标准输入中给出:
输出
按照如下顺序,用一个空格分隔,输出素昧要吃掉的卷心菜的数量 $X$ ,以及素昧选择要吃的卷心菜的方式的个数 $Y$ ,对 $998244353$ 取模。
``` $X$ $Y$ ```3 2
2 2 5
3 4
1 0
1 1
0 1
2 6
为了防止高桥成为卷心菜大师,素昧要吃掉两个卷心菜。有六种选择要吃的卷心菜的方式,如下所示,其中 $(i, j)$ 指的是品牌 $i$ 的第 $j$ 个卷心菜。
- $(1, 1), (1, 2)$
- $(1, 1), (2, 1)$
- $(1, 1), (2, 2)$
- $(1, 2), (2, 1)$
- $(1, 2), (2, 2)$
- $(2, 1), (2, 2)$
1 1
3
4
1
0 1
有可能高桥无法成为卷心菜大师,即使素昧不吃卷心菜。 此时,素昧要吃掉零个卷心菜,且他选择要吃的卷心菜的方式只有一种:不吃任何东西。
1 3
100
30 30 30
1 1 1
11 892328666
请确保为素昧选择要吃的卷心菜的方式的个数,按照 $998244353$ 取模。