#CSPJ1008. 正常任务分配(honi)

正常任务分配(honi)

题目描述

小 Z 被指派为某一项工程的总负责人,他可以在非常多的人中(可以认为是无数多)选出 NN 个人执行难度系数为 1N1\sim N 的任务。

有些人只能执行某一特定难度系数为 ii 任务,另一些人则可以完成相邻难度系数为 ii 或者 i+1i+1 的任务。

每个人只能接一个任务,每个任务只能分配给一个人。

问现在有多少种不同的分配任务的方案?

  • 两种方案视为不同,如果存在某个任务在两种方案中分配的人不同。
  • 因为方案数可能很大,所以输出方案数对 10000000071 000 000 007 取模的结果即可。

数据保证,一定存在一种方案可以使得每个任务 1N1\sim N 都能分配到人来完成。

输入格式

从 honi.in 文件输入数据。

第一行包含一个正整数 NN

第二行包含 NN 个不超过 10910^9 的整数,第 ii 个整数表示只能执行难度为 ii 的人数。

第三行包含 N1N-1 个不超过 10910^9 的整数,第 ii 个整数表示能执行难度为 iii+1i+1 的人数。

输出格式

输出到 honi.out 文件。

输出一行包含方案数 mod\text{mod} 10000000071 000 000 007

样例

3 
3 0 1 
0 1
3
4 
1 5 3 0 
0 2 1
33

样例输入3

点击链接 honi.in 下载大样例输入

样例输出3

点击链接 honi.out 下载大样例输出

说明/提示

样例 1 解释

我们可以假设有编号为 1,2,,51,2,\dots,5 的共 55 个人,其中编号为 1,2,31,2,333 个人只能完成任务 11,编号为 44 的人只能完成任务 33,编号为 55 的人可以完成任务 2233

  1. 没有人只能完成任务 22,所以我们要把唯一一个个能够完成任务 2,32,3 的人(编号为 55)分配去完成任务 22
  2. 接下来,只有一个 44 号可以完成任务 33,将他分配去任务 33
  3. 最后,还有 1,2,31,2,3 三个人可以完成任务 11

所以,总方案数为 113=31 * 1 * 3=3

样例 2 解释

我们假设编号为 11 的人只能完成任务 11,编号为 [2,6][2,6]55 个人只能完成任务 22,编号为 [7,9][7,9]33 个人只能完成任务 33,没有人只能完成任务 44,有编号为 10,1110,11 的人可以完成任务 2,32,3,编号为 1212 的人可以完成任务 44

  1. 因为没有人只能完成任务 44,所以我们必须选择 1212 号完成任务 44
  2. 只有 11 号可以完成任务 11,所以我们必须选择 11 号完成任务 11
  3. 现在只能完成任务 22 的有 [2,6][2,6]55 人,只能完成任务 33 的有 [7,9][7,9]33 人,这里有 35=153 * 5 = 15 种方案
  4. 如果考虑 10,1110,11 可以完成任务 2,32,3 的人,那么这里有 22 种去完成任务 22 或者任务 33,总共方案数为 23+52=162 * 3 + 5 * 2 = 16
  5. 另外,10,1110,11 两个人可以一个去任务 22,另一个去任务 33,这里又有 22 种方案

所以,总方案数为 15+16+2=3315+16+2=33 种。

数据范围

30%30\% 的数据,总人数不超过 1010

50%50\% 的数据,N5N \le 5

60%60\% 的数据,N20N \le 20

70%70\% 的数据,N1000N \le 1000

100%100\% 的数据,N105N \le 10^5,并且保证第二行以及第三行的每一个整数为不超过 109的非负整数10^9 的非负整数