QOJ.ac

QOJ

実行時間制限: 4 s メモリ制限: 1024 MB 満点: 10

#8417. 水龙头 [B]

統計

Radek 及其朋友公司的老板 Radek 试图淹没竞争对手 Mati & Co. 公司中所有存放文件的架子。为了进行完美的破坏,他请他的朋友,水管工 Janusz,在每个架子上方安装了小型水龙头。

为了简化,Mati & Co. 公司的架子可以用平面上的线段来表示。每个架子都是一对点 $(l_i, h_i)$ 和 $(r_i, h_i)$ 之间的线段。水管工安装的水龙头坐标为 $(\frac{l_i+r_i}{2}, h_i + 0.5)$。房间的地板由 $OX$ 轴表示。

当第 $i$ 个架子上方的小水龙头被打开时,该架子就会被淹没。随后,水会从架子的两端垂直向下滴落,并可能淹没下方的其他架子,或者流到地板上的排水系统中。

在第二个样例测试中,打开一个水龙头后水流的示意图。

Radek 将按照某种固定的顺序考虑这些水龙头。当他考虑第 $i$ 个水龙头时,仅当第 $i$ 个架子尚未被淹没时,他才会打开它。

Radek 尚未确定他将按什么顺序考虑这些水龙头。他将从 $n!$ 种可能的顺序中随机选择一种,每种顺序被选中的概率相同。Radek 现在想知道他平均需要打开多少个水龙头。

你的任务是回答 Radek 的问题,并给出模 $10^9 + 7$ 的结果。形式化地说,设结果为 $\frac{p}{q}$,其中 $q \neq 0$ 且 $\gcd(p, q) = 1$。你需要输出一个数字 $p \cdot q^{-1} \pmod{10^9 + 7}$,其中 $q^{-1}$ 是集合 $\{1, 2, \dots, 10^9 + 6\}$ 中满足 $q \cdot q^{-1} \equiv 1 \pmod{10^9 + 7}$ 的唯一数字。

可以证明,对于所有满足题目条件的测试用例,结果都是一个有理数,且其最简分数形式的分母不能被 $10^9 + 7$ 整除。

输入格式

第一行包含一个自然数 $n$ ($1 \le n \le 500\,000$),表示 Mati 公司中架子的数量。

接下来的 $n$ 行包含架子的描述。第 $i$ 行包含两个自然数 $l_i, r_i$ ($1 \le l_i < r_i \le 2 \cdot n$),如题目所述。为简化起见,我们假设 $h_i = i$。

你可以假设所有的数字 $l_i, r_i$ 都是两两不同的——数字 $l_i, r_i$ 构成了 $1$ 到 $2 \cdot n$ 的一个排列。

输出格式

在标准输出的唯一一行中,输出 Radek 平均需要打开的水龙头数量,模 $10^9 + 7$。

样例

样例输入 1

3
4 6
1 3
2 5

样例输出 1

2

样例输入 2

5
2 9
3 4
1 8
6 10
5 7

样例输出 2

233333338

说明

对于第一个样例,考虑 Radek 分析水龙头的所有可能顺序: 对于顺序 1, 2, 3,他将打开全部 3 个水龙头。 对于顺序 1, 3, 2,他将打开第一个和第三个水龙头。打开第三个水龙头后,水也会淹没第二个架子,因此他不需要打开第二个水龙头。 对于顺序 2, 1, 3,他将打开全部 3 个水龙头。 对于顺序 2, 3, 1,他将打开第二个和第三个水龙头。打开第三个水龙头后,水会淹没第一个架子,因此不需要打开第一个水龙头。 * 对于顺序 3, 1, 2 以及 3, 2, 1,他将只打开第三个水龙头。打开它后,所有架子都会被淹没,因此不需要打开其他水龙头。

因此,Radek 平均需要打开 $\frac{1}{6} \cdot (3 + 2 + 3 + 2 + 1 + 1) = 2$ 个水龙头。

在第二个样例中,Radek 平均需要打开 $\frac{91}{30}$ 个水龙头。由于 $30^{-1} \equiv 233333335 \pmod{10^9 + 7}$,我们得到 $91 \cdot 233333335 \equiv 21233333485 \equiv 233333338 \pmod{10^9 + 7}$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.