题目描述
译自 CCO 2024 Day2 T2「Heavy Light Decomposition」。
在一个只包含正整数的数组中,如果一个数字在数组里出现多次,我们就称它为「重」元素,否则为「轻」元素。
好的数组是指数组里的数字交替出现「轻」元素和「重」元素。
给你一个数组 a1,…,aN,请计算把它划分成若干个连续的子数组,使得每个子数组本身也都是好的数组的方案数。由于答案可能很大,请将最终结果对 1000003 取模输出。
输入格式
第一行包含一个正整数 N,表示数组的长度。
第二行包含 N 个正整数 a1,…,aN (1≤ai≤N),表示数组中的元素。
输出格式
输出将数组划分成好的连续子数组的方案数,对 1000003 取模后的结果。
5
1 2 3 2 3
4
对于数组 [1,2,3,2,3],存在 4 种合法的划分方式:
- [1],[2],[3],[2],[3]
- [1],[2,3,2],[3]
- [1],[2],[3,2,3]
- [1,2,3,2],[3]
5
1 2 1 3 1
6
数据范围与提示
| 子任务 |
分值 |
N 的限制 |
额外限制 |
| 1 |
12 |
2≤N≤50000 |
对于所有的 i,ai≤26 |
| 2 |
16 |
2≤N≤5000 |
无额外限制 |
| 3 |
20 |
2≤N≤5×105 |
每个序号为奇数的元素 ai 都必须等于 1 |
| 4 |
24 |
数组里的每个数字最多出现两次 |
| 5 |
28 |
无额外限制 |