#503. [2024-11-13 P2] 选举

[2024-11-13 P2] 选举

【题目描述】

从前有一个村子在竞选村长。

给定每个人所在的家庭和希望得到的票数,每个人都需要投恰好一票给其他人,但不能投给自家人。你想知道:有多少投票方案使得每个人得到的票数都与其期望的相等。

形式化题意:

给定两个长度为 n 的序列t, c ,你需要求有多少长度为 n 的序列 p 满足:

  1. 1 ≤ pip_i ≤ n 且 titpit_i ≠ t_{p_i}
  2. 对于任意 1 ≤ i ≤ n, j[pj=i]=ci\sum\limits_j [p_j=i] = c_i

答案对 998244353 取模。

【输入格式】

第一行一个整数 n 。

接下来一行输入 n 个整数,代表序列 c 。

接下来一行输入 n 个整数,代表序列 t 。

【输出格式】

一行一个整数表示答案。

【样例输入】

5
1 2 2 0 0
3 5 4 3 4

【样例输出】

5

【数据范围】

对于所有数据, n ≤ 5000, 1 ≤ ti ≤ n, 0 ≤ ci ≤ n, Σ c = n 。

子任务 1 ( 10% ) : 1 ≤ n ≤ 5 。

子任务 2 ( 20% ) : 对于任意 1 ≤ i ≤ n, ti = i 。

子任务 3 ( 20% ) : n ≤ 100 。

子任务 4 ( 20% ) : n ≤ 300 。

子任务 5 ( 30% ) : 无特殊限制。