题目背景
JOISC2022 D1T3
题目描述
从前,K 总统有着一个长度为 N 的字符串 S,仅由小写字母组成。然而,他忘记了它。
他还有一个词典,其中包含了各式各样的错误拼写。而他曾看过那本词典,现在他确认到 S 满足以下条件:
- 令 Ti (1≤i≤N) 为 S 删去第 i 个字符并将前后字符相接所得的字符串。对于每个 j (1≤j≤M) 满足 TAj≤TBj。
其中 TAj≤TBj 表示 TAj 等于 TBj 或 TAj 在字典序上小于 TBj。
请写一个程序,对于 K 总统给定的如上关于 S 的信息,输出可能的 S 的个数,对 109+7 取模。
输入格式
第一行,两个正整数 N,M,表示 S 的长度与限制的个数。
以下 M 行,其中第 j (1≤j≤M) 行包含两个正整数 Aj,Bj,表示一条限制。
输出格式
一行一个非负整数,表示可能的 S 的个数对 109+7 取模的结果。
提示
【样例解释 #1】
举例说明,若 S=bab,则 T1=ab,T2=bb,T3=ba。其满足 T1≤T3 和 T3≤T2。所以该 S 是合法的。
可以证明,总共有 5876 种合法的 S。因此,输出 5876。
另一方面,若 S=aab,则 T1=ab,T2=ab,T3=aa。其不满足 T1≤T3。所以该 S 不合法。
该样例满足所有子任务的限制。
【样例解释 #2】
该样例满足子任务 1,2,4,5 的限制。
【样例解释 #3】
取模前的结果为 824206295601,所以输出 206289833。
该样例满足子任务 1,2,4,5 的限制。
【样例解释 #4】
该样例满足所有子任务的限制。
【样例解释 #5】
该样例满足所有子任务的限制。
【数据范围】
对于所有数据,满足:
- 2≤N≤500000。
- 1≤M≤500000。
- 1≤Aj,Bj≤N (1≤j≤M)。
- Aj=Bj (1≤j≤M)。
- (Aj,Bj)=(Ak,Bk) (1≤j<k≤M)。
详细子任务附加限制及分值如下表所示:
子任务编号 |
附加限制 |
分值 |
1 |
N≤10 |
8 |
2 |
N≤200 |
20 |
3 |
存在 {1,2,…,N} 的排列 P 满足 Aj=Pj,Bj=Pj+1 (1≤j≤M=N−1) |
29 |
4 |
N≤20000 |
32 |
5 |
无附加限制 |
11 |