题目背景
前有连续子序列,接下来,读题很有用。
前无马。
题目描述
给你一个长为 n 的序列 a1…n,你需要求出其所有本质不同非空子序列的本质不同非空子序列数量之和。
形式化地,你需要求出有多少正整数序列对 (b1…l1,c1…l2),满足存在两个序列 p1…l1,q1…l2 使得:
- 1≤p1<p2<⋯<pl1≤n;
- ∀i∈[1,l1],bi=api;
- 1≤q1<q2<⋯<ql2≤l1;
- ∀i∈[1,l2],ci=bqi。
将答案对 109+7 取模。
输入格式
第一行一个正整数 n。
第二行 n 个正整数描述 a1…n。
输出格式
一行一个整数表示答案,对 109+7 取模。
3
1 2 3
19
3
1 2 2
12
10
5 5 2 5 3 4 1 4 4 3
15735
提示
样例 1 解释
有如下共 19 种合法序列对:
- b=(1,2,3),c=(1,2,3);
- b=(1,2,3),c=(1,2);
- b=(1,2,3),c=(1,3);
- b=(1,2,3),c=(2,3);
- b=(1,2,3),c=(1);
- b=(1,2,3),c=(2);
- b=(1,2,3),c=(3);
- b=(1,2),c=(1,2);
- b=(1,2),c=(1);
- b=(1,2),c=(2);
- b=(2,3),c=(2,3);
- b=(2,3),c=(2);
- b=(2,3),c=(3);
- b=(1,3),c=(1,3);
- b=(1,3),c=(1);
- b=(1,3),c=(3);
- b=(1),c=(1);
- b=(2),c=(2);
- b=(3),c=(3)。
样例 2 解释
有如下共 12 种合法序列对:
- b=(1,2,2),c=(1,2,2);
- b=(1,2,2),c=(1,2);
- b=(1,2,2),c=(2,2);
- b=(1,2,2),c=(1);
- b=(1,2,2),c=(2);
- b=(1,2),c=(1,2);
- b=(1,2),c=(1);
- b=(1,2),c=(2);
- b=(2,2),c=(2,2);
- b=(2,2),c=(2);
- b=(1),c=(1);
- b=(2),c=(2)。
数据范围与约定
本题采用捆绑测试。
::cute-table
| 子任务编号 | n≤ | 特殊性质 | 分值 |
| :----------: | :----------: | :----------: | :----------: |
| 1 | 10 | 无 | 10 |
| 2 | 20 | ^ | 10 |
| 3 | 100 | ^ | 15 |
| 4 | 500 | ^ | 15 |
| 5 | 8000 | ai≤2 | 15 |
| 6 | ^ | ai≤5 | 10 |
| 7 | ^ | 无 | 25 |
对于所有数据,保证 1≤n≤8000,1≤ai≤n。
保证本题模数 109+7 不等于 998244853 或 223。