#P5469. [NOI2019] 机器人

[NOI2019] 机器人

背景

时限 3 秒,内存 512MB

题目描述

小 R 喜欢研究机器人。

最近,小 R 新研制出了两种机器人,分别是 P 型机器人和 Q 型机器人。现在他要测试这两种机器人的移动能力,测试在从左到右排成一排的 nn 个柱子上进行,柱子用1−n1 - n 依次编号,ii 号柱子的高度为一个正整数 hih_i。机器人只能在相邻柱子间移动,即:若机器人当前在 ii 号柱子上,它只能尝试移动到 i−1i - 1 号和 i+1i + 1 号柱子上。

每次测试,小 R 会选取一个起点 ss,并将两种机器人均放置在 ss 号柱子上。随后它们会按自己的规则移动。

P 型机器人会一直向左移动,但它无法移动到比起点 ss 更高的柱子上。更具体地,P 型机器人在 l(l≤s)l (l \leq s) 号柱子停止移动,当且仅当下列两个条件均成立:

  • l=1l = 1 或 hl−1>hsh_{l-1} > h_s。

  • 对于满足 l≤j≤sl \leq j \leq s 的 jj,有 hj≤hsh_j \leq h_s。

Q 型机器人会一直向右移动,但它只能移动到比起点 ss 更低的柱子上。更具体地,Q 型机器人在 r(r≥s)r (r \geq s) 号柱子停止移动,当且仅当下列两个条件均成立:

  • r=nr = n 或 hr+1≥hsh_{r+1} \geq h_s。

  • 对于满足 s<j≤rs < j \leq r 的 jj,有 hj<hsh_j < h_s。

现在,小 R 可以设置每根柱子的高度,ii 号柱子可选择的高度范围为 [Ai,Bi][A_i, B_i],即Ai≤hi≤BiA_i \leq h_i \leq B_i。小 R 希望无论测试的起点 ss 选在哪里,两种机器人移动过的柱子数量的差的绝对值都小于等于 22。他想知道有多少种柱子高度的设置方案满足要求,小 R 认为两种方案不同当且仅当存在一个 kk,使得两种方案中 kk 号柱子的高度不同。请你告诉他满足要求的方案数模 109+710^9 + 7 后的结果。

输入格式

第一行一个正整数 nn,表示柱子的数量。

接下来 nn 行,第 ii 行两个正整数 Ai,BiA_i, B_i,分别表示 ii 号柱子的最小和最大高度。

输出格式

仅一行一个整数,表示答案模 109+710^9 + 7 的值。

5
3 3
2 2
3 4
2 2
3 3
1

提示

更多样例

您可以通过附加文件获得更多样例。

样例 2

见附加文件的 robot/robot2.in 与 robot/robot2.ans。

样例 3

见附加文件的 robot/robot3.in 与 robot/robot3.ans。

样例 4

见附加文件的 robot/robot4.in 与 robot/robot4.ans。

样例 1 解释

柱子高度共两种情况:

  • 高度为:3 2 3 2 3。此时若起点设置在 55,P 型机器人将停在 11 号柱子,共移动44 个柱子。Q 型机器人停在 55 号柱子,共移动 00 个柱子,不符合条件。

  • 高度为:3 2 4 2 3。此时无论起点选在哪,都满足条件,具体见下表:

::cute-table{tuack}

起点编号 P 型机器人 Q 型机器人
11 停在 11 号柱子,移动过 00 个 停在 22 号柱子,移动过 11 个
22 停在 22 号柱子,移动过 00 个
33 停在 11 号柱子,移动过 22 个 停在 55 号柱子,移动过 22 个
44 停在 44 号柱子,移动过 00 个
55 停在 44 号柱子,移动过 11 个 停在 55 号柱子,移动过 00 个

数据范围

对于所有测试数据:1≤n≤3001 \leq n \leq 300 , 1≤Ai≤Bi≤1091 \leq A_i \leq B_i \leq 10^9。

每个测试点的具体限制见下表:

::cute-table{tuack}

测试点编号 n≤n\le 特殊性质
1,21,2 77 Ai=Bi,Bi≤7A_i=B_i,B_i\le 7
3,43,4 Bi≤7B_i\le 7
5,6,75,6,7 5050 Bi≤100B_i\le 100
8,9,108,9,10 300300 Bi≤104B_i\le 10^4
11,1211,12 5050 Ai=1,Bi=109A_i=1,B_i=10^9
13,14,1513,14,15 无
16,1716,17 150150 ^
18,1918,19 200200
2020 300300