atcoder#ARC065D. [ARC065F] シャッフル

[ARC065F] シャッフル

题目描述

長さ N N 01 からなる文字列 S S があります。あなたは、以下の操作を各 1iM 1≦i≦M に対し i i の昇順に行います。

  • S S のうち、左から li l_i 文字目から ri r_i 文字目までの部分文字列を自由な順番で並び替える。

ただし、li l_i は非減少です。

M M 回の操作後の S S としてありうるものの数を 1000000007(= 109+7) 1000000007(=\ 10^9+7) で割った余りを求めてください。

输入格式

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

N N M M S S l1 l_1 r1 r_1 : lM l_M rM r_M

输出格式

M M 回の操作後の S S としてありうるものの数を 1000000007 1000000007 で割った余りを出力してください。

题目大意

有一个长度为 NN0101SS。对于每个 i=1,2,,Mi=1,2,\ldots,M,你将要按顺序地进行以下操作:

  • 任意地排列 SS 中第 lil_i 到第 rir_i 个字符之间的字符。

保证 lil_i 是不降的。

请你求出在 MM 次操作后,可以出现多少种不同的 0101 串。答案对 109+710^9+7 取模。

N,M3000N, M \leq 3000

5 2
01001
2 4
3 5
6
9 3
110111110
1 4
4 6
6 9
26
11 6
00101000110
2 4
2 3
4 7
5 6
6 10
10 11
143

提示

制約

  • 2N3000 2≦N≦3000
  • 1M3000 1≦M≦3000
  • S S 0, 1 からなる。
  • S S の長さは N N と等しい。
  • 1li < riN 1≦l_i\ <\ r_i≦N
  • li  li+1 l_i\ ≦\ l_{i+1}

Sample Explanation 1

1 1 回目の操作後の S S としてありうるものは、 01001, 00101, 000113 3 つです。 2 2 回目の操作後の S S としてありうるものは、 01100, 01010, 01001, 00011, 00101, 001106 6 つです。