题目 20357

Silhouette

查看题解 ↗GitHub ↗如何评测
题号
20357
标签
比赛NOIP
来源
2018 国庆雅礼集训 10-7

Silhouette

silhouette.cpp/in/out

  • 时间限制:1.0s
  • 空间限制:512MB

题目描述

有一个 n×nn \times n 的网格,在每个格子上堆叠了一些边长为 1 的立方体。

现在给出这个三维几何体的正视图和左视图,求有多少种与之符合的堆叠立方体的方案。两种方案被认为是不同的,当且仅当某个格子上立方体的数量不同。

输出答案对 109+710^9 + 7 取模的结果。

输入格式

从文件 silhouette.in 中读入数据。

第一行一个整数 nn。

第二行 nn 个整数,第 ii 个表示正视图中从左到右第 ii 个位置的高度 AiA_i。

第三行 nn 个整数,第 ii 个表示左视图中从左到右第 ii 个位置的高度 BiB_i。

输出格式

输出到文件 silhouette.out 中。

输出一行表示答案。

样例 1 输入

文本
2
1 2
2 1

样例 1 输出

文本
5

样例 1 解释

正视图和左视图:

文本
  _       _
 _|_|     |_|_
|_|_|     |_|_|

如果用 2×22 \times 2 的矩阵来表示每个格子上堆叠的立方体个数,则五种方案可以表示为:

文本
1 2     0 2     1 2     0 2     1 2
1 1     1 0     1 0     1 1     0 1

样例 2 输入

文本
3
3 1 3
2 3 2

样例 2 输出

文本
175

样例 3 输入

文本
3
1 1 1
3 3 3

样例 3 输出

文本
0

样例 4

见选手目录下的 silhouette/silhouette4.in 与 silhouette/silhouette4.ans。

样例 5

见选手目录下的 silhouette/silhouette5.in 与 silhouette/silhouette5.ans。

数据范围

对于所有数据,有 1≤n≤1051 \le n \le 10^5,1≤Ai,Bi≤1091 \le A_i, B_i \le 10^9。

  • Subtask 1 (3%):n=1n = 1。
  • Subtask 2 (14%):n≤3n \le 3,Ai,Bi≤4A_i, B_i \le 4。
  • Subtask 3 (17%):n≤16n \le 16。
  • Subtask 4 (24%):n≤100n \le 100。
  • Subtask 5 (13%):n≤3000n \le 3000。
  • Subtask 6 (18%):Ai,BiA_i, B_i 分别构成了一个 1 至 nn 的排列。
  • Subtask 7 (11%):没有特殊的约束。

数据下载

题目 20357 的公开数据

正在读取文件列表…

常用命令

题目 20357 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。