#CSPJ1008. 正常任务分配(honi)
正常任务分配(honi)
题目描述
小 Z 被指派为某一项工程的总负责人,他可以在非常多的人中(可以认为是无数多)选出 个人执行难度系数为 的任务。
有些人只能执行某一特定难度系数为 任务,另一些人则可以完成相邻难度系数为 或者 的任务。
每个人只能接一个任务,每个任务只能分配给一个人。
问现在有多少种不同的分配任务的方案?
- 两种方案视为不同,如果存在某个任务在两种方案中分配的人不同。
- 因为方案数可能很大,所以输出方案数对 取模的结果即可。
数据保证,一定存在一种方案可以使得每个任务 都能分配到人来完成。
输入格式
从 honi.in 文件输入数据。
第一行包含一个正整数 。
第二行包含 个不超过 的整数,第 个整数表示只能执行难度为 的人数。
第三行包含 个不超过 的整数,第 个整数表示能执行难度为 或 的人数。
输出格式
输出到 honi.out 文件。
输出一行包含方案数 。
样例
3
3 0 1
0 1
3
4
1 5 3 0
0 2 1
33
样例输入3
点击链接 honi.in 下载大样例输入
样例输出3
点击链接 honi.out 下载大样例输出
说明/提示
样例 1 解释
我们可以假设有编号为 的共 个人,其中编号为 共 个人只能完成任务 ,编号为 的人只能完成任务 ,编号为 的人可以完成任务 和 。
- 没有人只能完成任务 ,所以我们要把唯一一个个能够完成任务 的人(编号为 )分配去完成任务
- 接下来,只有一个 号可以完成任务 ,将他分配去任务
- 最后,还有 三个人可以完成任务
所以,总方案数为
样例 2 解释
我们假设编号为 的人只能完成任务 ,编号为 共 个人只能完成任务 ,编号为 共 个人只能完成任务 ,没有人只能完成任务 ,有编号为 的人可以完成任务 ,编号为 的人可以完成任务 。
- 因为没有人只能完成任务 ,所以我们必须选择 号完成任务
- 只有 号可以完成任务 ,所以我们必须选择 号完成任务
- 现在只能完成任务 的有 共 人,只能完成任务 的有 共 人,这里有 种方案
- 如果考虑 可以完成任务 的人,那么这里有 种去完成任务 或者任务 ,总共方案数为 种
- 另外, 两个人可以一个去任务 ,另一个去任务 ,这里又有 种方案
所以,总方案数为 种。
数据范围
的数据,总人数不超过 ;
的数据,;
的数据,;
的数据,;
的数据,,并且保证第二行以及第三行的每一个整数为不超过 。