#654. 树序列
树序列
题目描述
长度为 的序列 (每个元素为 到 之间的整数)被称为 好序列 当且仅当满足如下条件:
-
对于任意区间 (),存在一个整数 (),使得满足下面的条件:
-
- 先构造一个初始无边的图,顶点编号为 到 。对于每个 满足 且 ,向图中添加一条连接顶点 和顶点 的边。此时顶点 在该图中构成一棵树(即这些顶点连通且恰有 条边)。
现给定序列 ,其中每个元素要么是 到 之间的整数,要么是 。请统计将 中的所有 元素替换为 到 之间整数的方案数,使得替换后的序列为一个 好序列。答案对 取模。
输入格式
输入由标准输入给出,格式如下:
- 第一行一个正整数 表示输入序列的长度;
- 第二行 个由空格隔开的正整数,第 个正整数表示 。
输出格式
输出一个整数,表示将 中的 替换为 到 (含)后使序列成为好序列的方案数,对 取模。
样例输入 1
3
-1 -1 -1
样例输出 1
7
样例输入 2
3
-1 3 -1
样例输出 2
3
样例输入 3
6
2 3 -1 -1 -1 -1
样例输出 3
21
说明
样例 1 解释
样例 中满足条件的替换共有 种,列举如下:
例如对于 ,区间 可取 :对 且 ,添加边 ,于是顶点 连通且构成一棵树。其它区间也能验证成立,因此 是好序列。
样例 2 解释
满足条件的替换为:
、、。
数据范围
- 所有输入数均为整数。
- 。
- 或 。