CF1799G Count Voting
题目描述
有 $n$ 个人将参与投票。每个人恰好有一票。
第 $i$ 个人属于团队 $t_i$($1 \leq t_i \leq n$),其中 $t_i = t_j$ 表示第 $i$ 个人和第 $j$ 个人属于同一个团队。根据规则,每个人必须投票给不同团队的人。注意,这也意味着每个人不能投票给自己。
每个人都知道自己希望获得的票数 $c_i$。有多少种可能的投票方式,使得每个人都能获得期望的票数?由于答案可能很大,请输出对 $998\,244\,353$ 取模后的结果。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 200$)——表示人数。
第二行包含 $n$ 个整数 $c_1, c_2, \ldots, c_n$($0 \leq c_i \leq n$)——每个人期望获得的票数。保证 $\sum\limits_{i=1}^{n} c_i = n$。
第三行包含 $n$ 个整数 $t_1, t_2, \ldots, t_n$($1 \leq t_i \leq n$)——每个人所属的团队编号。
输出格式
输出一个整数,表示满足条件的投票方案数,对 $998\,244\,353$ 取模。
说明/提示
在第一个测试样例中,有两种可能的投票方式:$(2, 3, 1)$,$(3, 1, 2)$。
在第三个测试样例中,有五种可能的投票方式:$(3, 3, 2, 2, 1)$,$(2, 3, 2, 3, 1)$,$(3, 3, 1, 2, 2)$,$(3, 1, 2, 3, 2)$,$(2, 3, 1, 3, 2)$。
由 ChatGPT 4.1 翻译