#D0645. [DAY22]规定每层节点数有多少种二叉树

[DAY22]规定每层节点数有多少种二叉树

题目描述

33DAI 想构造一棵 nn 层的二叉树,他希望第 ii 层有 aia_i 个节点(a1=1a_1=1,对于 i>1i\gt 1,保证 aiai1×2a_i\le a_{i-1}\times 2,即保证有解)。

请你帮他算算有多少种可能的二叉树。方案数可能很大,请输出对 109+710^9+7 取余后的结果。

输入格式

第一行一个数 nn

第二行为空格隔开的 nn 个整数 a1ana_1\sim a_n

输出格式

一个数,即方案数。方案数可能很大,请输出对 109+710^9+7 取余后的结果。

3
1
2
1
4
  /\   /\   /\   /\
 /     \     /     \
3
1
2
2
6
  /\ | /\  |  /\ |  /\  | /\ | /\
 /\  |  /\ | / / | /  \ | \/ | \ \

数据规模与约定

对于 100%100\% 的数据,1n50001 \le n \le 50001ai50001\le a_i\le 5000

  • 子任务 1(30 分):保证 ai2a_i\le 2
  • 子任务 2(30 分):保证 n4n \le 4
  • 子任务 3(40 分):没有特殊性质。