A85906.「NOI2019」机器人
NOI/NOI+/CTSC
通过率:0%
时间限制:3.00s
内存限制:512MB
题目描述
小 R 喜欢研究机器人。
最近,小 R 新研制出了两种机器人,分别是 P 型机器人和 Q 型机器人。现在他要测试这两种机器人的移动能力,测试在从左到右排成一排的 n 个柱子上进行,柱子用 1∼n 依次编号,i 号柱子的高度为一个正整数 hi。机器人只能在相邻柱子间移动,即:若机器人当前在 i 号柱子上,它只能尝试移动到 i−1 号和 i+1 号柱子上。
每次测试,小 R 会选取一个起点 s,并将两种机器人均放置在 s 号柱子上。随后它们会按自己的规则移动。
P 型机器人会一直向左移动,但它无法移动到比起点 s 更高的柱子上。更具体地,P 型机器人在 l (l≤s) 号柱子停止移动,当且仅当下列两个条件均成立:
- l=1 或 hl−1>hs;
- 对于满足 l≤j≤s 的 j,有 hj≤hs。
Q 型机器人会一直向右移动,但它只能移动到比起点 s 更低的柱子上。更具体地,Q 型机器人在 r (r≥s) 号柱子停止移动,当且仅当下列两个条件均成立:
- r=n 或 hr+1≥hs;
- 对于满足 s<j≤r 的 j,有 hj<hs。
现在,小 R 可以设置每根柱子的高度,i 号柱子可选择的高度范围为 [Ai,Bi],即 Ai≤hi≤Bi。小 R 希望无论测试的起点 s 选在哪里,两种机器人移动过的柱子数量的差的绝对值都小于等于 2。他想知道有多少种柱子高度的设置方案满足要求,小 R 认为两种方案不同当且仅当存在一个 k,使得两种方案中 k 号柱子的高度不同。请你告诉他满足要求的方案数模 109+7 后的结果。
输入格式
从文件 robot.in 中读入数据。
第一行一个正整数 n,表示柱子的数量。
接下来 n 行,第 i 行两个正整数 Ai,Bi,分别表示 i 号柱子的最小和最大高度。
输出格式
输出到文件 robot.out 中。
仅一行一个整数,表示答案模 109+7 的值。
输入输出样例
输入#1
5 3 3 2 2 3 4 2 2 3 3
输出#1
1
说明/提示
对于所有测试数据:1≤n≤300,1≤Ai≤Bi≤109。
每个测试点的具体限制见下表:
| 测试点编号 | $n\le $ | 特殊性质 |
|---|---|---|
| 1,2 | 7 | Ai=Bi,Bi≤7 |
| 3,4 | 7 | Bi≤7 |
| 5∼7 | 50 | Bi≤100 |
| 8∼10 | 300 | Bi≤104 |
| 11,12 | 50 | Ai=1,Bi=109 |
| 13∼15 | 50 | 无 |
| 16,17 | 150 | 无 |
| 18,19 | 200 | 无 |
| 20 | 300 | 无 |