luogu#P11505. [NordicOI 2018] Mysterious Array

[NordicOI 2018] Mysterious Array

题目背景

译自 Nordic Olympiad in Informatics 2018 Mysterious Array

题目描述

有一个数组,包含了 11NN 的排列(即每个数字在数组中出现一次)。该数组的元素编号是 11 开始的。

然而,你并不知道数组的具体内容。你会得到 QQ 条信息,信息的形式是“在编号 aabb 之间的最小值是多少”。

你的任务是计算出符合这些查询的数组的数量。

输入格式

输入的第一行包含两个整数 NNQQ1N,Q1\leq N,Q):数组的大小和条件的数量。

接下来有 QQ 行描述信息。每行包含三个整数 aabbxx1abN1 \leq a \leq b \leq N1xN1 \leq x \leq N):表示在位置 aabb 之间的最小值为 xx

注意,查询的结果可能不一致,并且有可能不存在符合这些查询的数组。

输出格式

输出一个整数:数组的数量对 109+710^9 + 7 取模的结果。

3 2
1 2 2
1 3 1
2
8 3
3 7 2
6 8 2
4 5 5
576

提示

在第一个样例中,数组的大小是 33,包含了数 112233 的一个排列。此外,给定了以下信息:编号 1122 之间的最小值是 22,编号 1133 之间(即整个数组)的最小值是 11。只有两个数组符合这些条件:[2,3,1][2, 3, 1][3,2,1][3, 2, 1]

在第二个样例中,有 576576 个数组符合给定的条件。


你的解法将在一组子任务上进行评分。每个子任务包含多个测试用例。要获得子任务的分数,你的解法必须通过子任务中的所有测试用例。

子任务 分数 限制条件
11 2323 1N,Q101\leq N,Q\leq 10
22 3535 1N,Q10001\leq N,Q\leq 1000
33 4242 1N,Q21051\leq N,Q\leq 2\cdot 10^5