atcoder#ARC100D. [ARC100F] Colorful Sequences

[ARC100F] Colorful Sequences

题目描述

整数 N N K K 、そして長さ M M の整数列 A A が与えられます。

各要素が 1 1 以上 K K 以下の整数である整数列がカラフルであるとは、 その整数列の長さ K K の連続する部分列であって、1 1 から K K までの整数を 1 1 個ずつ含むものが存在することを意味します。

すべての長さ N N のカラフルな整数列について、その連続する部分列であって A A に一致するものの個数を数えて、その総和を求めてください。 ただし、答えは非常に大きくなることがあるので、109+7 10^9+7 で割った余りを求めてください。

输入格式

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

N N K K M M A1 A_1 A2 A_2 ... ... AM A_M

输出格式

すべての長さ N N のカラフルな整数列について、その連続する部分列であって A A に一致するものの個数を数えて、 その総和を 109+7 10^9+7 で割った余りを出力せよ。

题目大意

题目描述

Lin要过生日了,Puro想送他一个NN层的蛋糕作为礼物,但是Puro正在纠结奶油的颜色

Puro有KK种不同的奶油,每一层蛋糕都能涂上其中一种,但是要让他们俩同时满意是个问题,具体来说是这样的:

  • 如果存在连续KK层蛋糕,包含了所有KK种奶油,那么这个蛋糕就是Puro最喜欢的“彩虹蛋糕”
  • 同时,对任意连续MM层蛋糕,如果它们所使用的奶油顺序刚好满足一个长度为MM的序列AA,那么Lin就会有11的高兴度(两个出现的AA可以部分重叠)

现在问Puro能够做出的所有“彩虹蛋糕”的高兴度之和为多少?

答案对(109+7)(10^9+7)取模

如果你答对了,Dr.K将送你一本字帖

说明/提示

$\begin{array}{l}1\le N\le 25000\\1\le K\le 400\\1\le M\le N\\1\le A_i\le K\end{array}$

样例1解释

(1,1,2),(1,2,1),(1,2,2),(2,1,1),(2,1,2),(2,2,1)(1,1,2),(1,2,1),(1,2,2),(2,1,1),(2,1,2),(2,2,1)总共66种“彩虹蛋糕”,它们分别能产生2,2,1,2,1,12,2,1,2,1,1的高兴度,因此答案为2+2+1+2+1+1=92+2+1+2+1+1=9的高兴度

3 2 1
1
9
4 2 2
1 2
12
7 4 5
1 2 3 1 2
17
5 4 3
1 1 1
0
10 3 5
1 1 2 3 3
1458
25000 400 4
3 7 31 127
923966268
9954 310 12
267 193 278 294 6 63 86 166 157 193 168 43
979180369

提示

制約

  • 1  N  25000 1\ \leq\ N\ \leq\ 25000
  • 1  K  400 1\ \leq\ K\ \leq\ 400
  • 1  M  N 1\ \leq\ M\ \leq\ N
  • 1  Ai  K 1\ \leq\ A_i\ \leq\ K
  • 入力はすべて整数である。

Sample Explanation 1

長さ 3 3 のカラフルな整数列は、(1,1,2) (1,1,2) , (1,2,1) (1,2,1) , (1,2,2) (1,2,2) , (2,1,1) (2,1,1) , (2,1,2) (2,1,2) , (2,2,1) (2,2,1) 6 6 個です。 これらの整数列の、連続する部分列であって A=(1) A=(1) に一致するものの個数は、それぞれ 2 2 , 2 2 , 1 1 , 2 2 , 1 1 , 1 1 個です。 よって、これらの合計である 9 9 が答えになります。