atcoder#AGC037F. [AGC037F] Counting of Subarrays

[AGC037F] Counting of Subarrays

题目描述

正整数列 S S 及び正整数 k,l k,l が以下のいずれかの条件をみたすとき、 S S レベル (k,l) (k,l) に属すると定義することにします。

  • S S の要素数が 1 1 であり、その要素の値が k k である。
  • あるレベル(k1,l) (k-1,l) に属する数列 T1,T2,...,Tm T_1,T_2,...,T_m (m  l m\ ≧\ l ) が存在して、 T1,T2,...,Tm T_1,T_2,...,T_m をこの順に連結して得られる数列と S S が一致する。

ただし、k=1 k=1 のとき二番目の条件は意味を持たない、つまりレベル(1,l) (1,l) の正整数列は一つ目の条件をみたすもののみであることに注意して下さい。

正整数列 A1,A2,...,AN A_1,A_2,...,A_N と正整数 L L が与えられます。 以下の条件をみたす部分列 Ai,Ai+1,...,Aj A_i,A_{i+1},...,A_j (1  i  j  N 1\ ≦\ i\ ≦\ j\ ≦\ N ) の個数を求めてください。

  • ある正整数 K K が存在して、数列 Ai,Ai+1,...,Aj A_i,A_{i+1},...,A_j がレベル(K,L) (K,L) に属する。

输入格式

入力は以下の形式で標準入力から与えられる。

N N L L A1 A_1 A2 A_2 ... ... AN A_N

输出格式

条件をみたす部分列の個数を出力せよ。

题目大意

题目描述

对于一个由正整数组成的序列 S S 和两个正整数 k,l k,l ,只要 S S 满足下列两个条件之一,我们就称 S S 属于级别 (k,l) (k,l) (一个序列可能同时属于多个级别):

  • S=1 |S|=1 S S 中唯一的数字是 k k
  • S S 可以由 m m 个属于级别 (k1,l) (k-1,l) 的序列 T1,T2,,Tm(ml) T_1,T_2,\dots,T_m(m\ge l) 按顺序拼接而得到。

注意到当 k=1 k=1 时第二个条件是无效的,所以,只有在满足第一个条件时,序列才可能属于级别 (1,l) (1,l)

现在你有一个正整数序列 A1,A2,,AN A_1,A_2,\dots,A_N 和一个正整数 L L ,求满足以下条件的连续子序列 Ai,Ai+1,,Aj(1ijN) A_i,A_{i+1},\dots,A_j(1\le i\le j\le N) 的数量:

  • 存在一个正整数 K K ,使得序列 Ai,Ai+1,,Aj(1ijN) A_i,A_{i+1},\dots,A_j(1\le i\le j\le N) 属于级别 (K,L) (K,L)
9 3
2 1 1 1 1 1 1 2 3
22
9 2
2 1 1 1 1 1 1 2 3
41
15 3
4 3 2 1 1 1 2 3 2 2 1 1 1 2 2
31

提示

制約

  • 1  N  2 × 105 1\ ≦\ N\ ≦\ 2\ \times\ 10^5
  • 2  L  N 2\ ≦\ L\ ≦\ N
  • 1  Ai  109 1\ ≦\ A_i\ ≦\ 10^9

Sample Explanation 1

例えば (1,1,1) (1,1,1) (2) (2) という数列はともにレベル (2,3) (2,3) に属するので、(2,1,1,1,1,1,1) (2,1,1,1,1,1,1) という数列はレベル (3,3) (3,3) に属します。