#lg15129. [ROIR 2026] 筹码放置

    ID: 9648 传统题 1000ms 512MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>动态规划 DP线段树容斥原理单调栈普及+/提高−

[ROIR 2026] 筹码放置

[AdditionalFile5566.zip](file://AdditionalFile5566.zip?type=additional_file)

#5566. 「ROIR 2026 Day1」棋子摆放

标签: 传统 | 时间限制: 1000 ms | 内存限制: 512 MiB |

题目描述

译自 ROI Regional 2026 Day1 T3. Расстановки фишек

给定一块 m×mm \times m 的方形棋盘,行和列均从 11mm 编号。

需要在棋盘上摆放棋子,使得每格至多有一个棋子(即棋子不能重叠)。同时需满足 nn 个限制条件。第 ii 个限制给出两个整数 rir_icic_i,表示在左上角子矩形 [1ri]×[1ci][1 \ldots r_i] \times [1 \ldots c_i] 中,至多只能放置一个棋子

没有被任何矩形覆盖的格子可放或不放。

求满足所有限制条件的不同摆放方案数量,对 109+710^9 + 7 取模。

输入格式

第一行两个整数 n,mn, m (1n2105, 1m109)(1 \leq n \leq 2 \cdot 10^5,\ 1 \leq m \leq 10^9),分别表示限制数量和棋盘大小。

接下来 nn 行,每行两个整数 ri,cir_i, c_i (1ri,cim)(1 \leq r_i, c_i \leq m)

输出格式

输出一个整数,表示满足所有限制的合法摆放方案数量,对 109+710^9 + 7 取模。

样例 1

输入

1 4
4 4

输出

17

整个棋盘上至多只能放置一个棋子。 有 4×4=164 \times 4 = 16 种放置一个棋子的方案,加上 11 种不放置任何棋子的空方案,总计 1717 种。

样例 2

输入

2 2
1 2
2 1

输出

10

样例 3

输入

3 5
2 5
3 4
4 4

输出

4480

数据范围与提示

详细子任务附加限制及分值如下表所示(只有通过本子任务及所有必要子任务的所有测试,才能获得对应分数):

子任务 分值 附加限制 子任务依赖
11 33 n10, m4n \leq 10,\ m \leq 4
22 66 n=1, m1000n = 1,\ m \leq 1000
33 88 n10, m1000n \leq 10,\ m \leq 1000 1,21, 2
44 88 n15, m109n \leq 15,\ m \leq 10^9 131\sim 3
55 1010 n2500, m100n \leq 2500,\ m \leq 100 11
66 1010 n2500, m250n \leq 2500,\ m \leq 250 1,51, 5
77 1010 n2500, m1000n \leq 2500,\ m \leq 1000 13,5,61\sim 3, 5, 6
88 1010 n2500, m105n \leq 2500,\ m \leq 10^5 13,571\sim 3, 5\sim 7
99 1515 n2105, m2105n \leq 2 \cdot 10^5,\ m \leq 2 \cdot 10^5 13,581\sim 3, 5\sim 8
1010 2020 无附加限制 191\sim 9