#iai30b1. 相等子序列
相等子序列
相等子序列
题目描述
给定一个序列 ,请计算它有多少种不同的相等子序列。由于答案可能很大,输出方案数量模 的余数。
子序列是指从原序列中去除部分数字组成的序列(且留下的数字应保持原序列的顺序),空集不算子序列,原序列本身算是自身的一种子序列。
两个子序列相等,是指他们的长度相同,且对应的每一个数字都相等。比如对于序列 来说,第一个 与 第二个 就是相等的子序列。
输入格式
第一行:单个整数 ,代表序列长度
第二行: 个整数,代表 到
输出格式
单个整数:表示不相等子序列的数量模 的余数。
数据范围
- 对于 的数据,保证 ;
- 对于 的数据,保证 ;
- 对于 的数据,保证 ;
样例输入 #1
4
1 2 3 2
样例输出 #1
13
知识点与难度
本题涉及的知识点从属于 GESP 6级,难度等级:⭐⭐⭐。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 N≤100 / 特殊: 全相同 / 特殊: 严格递增 |
| 2 | 15 | 9~11 | Hack: N=1 / Hack: 大数取模 / Hack: 重复元素 |
| 3 | 30 | 12~20 | 中大规模 N≈10000~1000000 压力 |
| 4 | 25 | 21~25 | 随机 N=1~1000000 回归 |