#P16040. [Oni2023国家队选拔赛]Sirbun

    ID: 15251 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 6 上传者: 标签>算法基础贪心数据结构线段树CF2000

[Oni2023国家队选拔赛]Sirbun

题目描述

远古祖先 Ziraxes 给自由达契亚人出了一道编程题。传说中,对于一个正整数数组 AA,可以执行如下操作:

选择一个元素 AiA_i 和一个自然数 xx,将 AiA_i 减去 xx,即让它变成 AixA_i-x

如果通过执行任意多次上述操作,可以使数组中所有元素都变成互不相同的正整数,则称这个数组是好的。

例如,数组 (2,3,3,5)(2,3,3,5) 是好的,因为可以把第二个元素减去 22,得到 (2,1,3,5)(2,1,3,5),此时元素互不相同;而数组 (2,2,7,2,4)(2,2,7,2,4) 不是好的。

给定一个长度为 NN 的正整数数组 AA,请计算有多少个连续子数组是好的。

输入格式

第一行包含整数 NN

第二行包含 NN 个整数,表示数组 AA

输出格式

输出一个整数,表示好的连续子数组数量。

数据范围

  • 1N1000001\le N\le 100000
  • 1AiN1\le A_i\le N

子任务

子任务 分值 限制
1 19 1N3001\le N\le 300
2 20 1N15001\le N\le 1500
3 22 1N70001\le N\le 7000
4 17 1N500001\le N\le 50000
5 22 无额外限制

样例

5
4 2 2 3 2
13

好的连续子数组为:

{4}
{2}
{2}
{3}
{2}
{4,2}
{4,2,2}
{4,2,2,3}
{2,2}
{2,2,3}
{2,3}
{2,3,2}
{3,2}