问题 G: 套娃收纳
内存限制:256 MB
时间限制:1 S
标准输入输出
题目类型:传统
评测方式:Special Judge
上传者:
提交:0
通过:0
题目描述
locytus 有 n 个大小不一的套娃。每个套娃有一个内径 li 和一个外径 ri,第 i 个套娃能嵌套到第 j 个套娃里当且仅当 ri≤lj,此外,每个套娃至多只能套住一个套娃。(被套住的套娃可以再套住另一个套娃)
套娃太多太占地方了,所以 locytus 决定把套娃尽可能套在一起,让所有套娃占的总空间最少。
具体来说,locytus 需要把序列 {(l1,r1),…,(ln,rn)} 任意排序后,再划分成若干子序列 S1,…,Sm,使得每个序列形如 Sj={(lj,1,rj,1),…,(lj,|Sj|,rj,|Sj|)} 满足 lj,t≥rj,t+1,t=1,2,…,|Sj|−1. 并且 Σ1≤j≤mrj,13 最小。
满足要求的套娃方案很多,locytus 想知道一共有多少种可能的方案。
方案数可能很大,只需要输出对 109+7 取模后的结果。
(注:两个方案 {Si},{Ti}不同当且仅当存在有序集 Si 与任意 Tj 均不相同,而诸如 {S1,S2} 和 {S2,S1} 这样的重排视为同一种方案)
输入格式
第一行包含一个正整数 n (1≤n≤105),表示套娃总数。
接下来的 n 行,每行包含两个正整数 li,ri(1≤li<ri≤2×105),表示每个套娃的内径和外径。数据保证不存在i≠j 使得 (li,ri)=(lj,rj)。
输出格式
输出一个正整数,表示方案数对 109+7 取模的值。
输入样例 复制
4
4 5
2 4
3 4
1 2
输出样例 复制
4
数据范围与提示
样例的四种划分方案如下:
S1={(4,5),(2,4),(1,2)},S2={(3,4)}
S1={(4,5),(3,4),(1,2)},S2={(2,4)}
S1={(4,5),(2,4)},S2={(3,4),(1,2)}
S1={(4,5),(3,4)},S2={(2,4),(1,2)}
S1={(4,5),(2,4),(1,2)},S2={(3,4)}
S1={(4,5),(3,4),(1,2)},S2={(2,4)}
S1={(4,5),(2,4)},S2={(3,4),(1,2)}
S1={(4,5),(3,4)},S2={(2,4),(1,2)}