#P13809. [codefestival2017 qualc]Three Gluttons

    ID: 13010 传统题 2000ms 512MiB 尝试: 2 已通过: 1 难度: 7 上传者: 标签>CF2300计数DP组合数学前缀和动态规划构造贪心

[codefestival2017 qualc]Three Gluttons

题目描述

3 名男性 A、B、C 决定一起吃寿司。最开始有 NN 种寿司,每种各有 1 个。寿司编号为 1 到 NN。其中,NN 一定是 3 的倍数。

3 人各自对寿司有喜好排名。A 的排名用 1 到 NN 的一个排列 (a1,,aN)(a_1, \ldots, a_N) 表示。对于每个 ii1iN1 \leq i \leq N),A 最喜欢的第 ii 个寿司是寿司 aia_i。同理,B 和 C 的排名分别用排列 (b1,,bN)(b_1, \ldots, b_N)(c1,,cN)(c_1, \ldots, c_N) 表示。

只要寿司还剩下或者未发生争吵(见下述),3 个人就重复以下操作:

  • A、B、C 各自从剩下的寿司中选出自己最喜欢的一种,分别记为 xxyyzz。如果 xxyyzz 两两不同,则 A、B、C 分别吃掉寿司 xxyyzz。否则,三人会开始争吵并打架。

给定 A 和 B 的排名 (a1,,aN)(a_1, \ldots, a_N)(b1,,bN)(b_1, \ldots, b_N),请问 C 的排名 (c1,,cN)(c_1, \ldots, c_N) 有多少种不同的排列,能使得三人无争吵地吃光所有寿司?请输出答案对 109+710^9+7 取模后的结果。

输入格式

输入以如下格式从标准输入给出。

NN a1a_1 \ldots aNa_N b1b_1 \ldots bNb_N

输出格式

输出能够使三人无争吵地吃光所有寿司的 C 的排名数目,对 109+710^9+7 取模的结果。

输入输出样例 #1

输入 #1

3
1 2 3
2 3 1

输出 #1

2

输入输出样例 #2

输入 #2

3
1 2 3
1 2 3

输出 #2

0

输入输出样例 #3

输入 #3

6
1 2 3 4 5 6
2 1 4 3 6 5

输出 #3

80

输入输出样例 #4

输入 #4

6
1 2 3 4 5 6
6 5 4 3 2 1

输出 #4

160

输入输出样例 #5

输入 #5

9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6

输出 #5

33600

说明/提示

限制条件

  • 3N3993 \leq N \leq 399
  • NN 是 3 的倍数。
  • (a1,,aN)(a_1, \ldots, a_N)(b1,,bN)(b_1, \ldots, b_N) 是 1 到 NN 的全排列。

样例解释 1

(c1,c2,c3)=(3,1,2), (3,2,1)(c_1, c_2, c_3) = (3, 1, 2),\ (3, 2, 1) 一共有 2 种情况。此时三人会分别吃掉寿司 1、2、3,最终寿司全部被吃光。

样例解释 2

无论 (c1,c2,c3)(c_1, c_2, c_3) 是哪种排列,A 和 B 都会同时选寿司 1,因此会发生争吵。

样例解释 3

例如对于 $(c_1, c_2, c_3, c_4, c_5, c_6) = (5, 1, 2, 6, 3, 4)$,第一次 A、B、C 分别吃掉寿司 1、2、5,第二次分别吃掉 3、4、6,寿司被全部吃完。