#P10142. [USACO24JAN] Mooball Teams III P

[USACO24JAN] Mooball Teams III P

题目描述

Farmer John 在他的农场上有 NN 头牛(2N21052\le N\le 2\cdot 10^5),编号为 1N1\ldots N。奶牛 ii 位于整数坐标 (xi,yi)(x_i,y_i)1xi,yiN1\le x_i,y_i\le N)。Farmer John 想要挑选两支队伍来玩哞球游戏!

其中一支队伍将是「红队」;另一队将是「蓝队」。对组队只有很少的要求。两队都不能为空,并且 NN 头奶牛中的每一头至多只能在一个队中(可以两队都不在)。唯一的其他要求是基于哞球独特的特点:一个无限长的网,必须将其放置为平面中非整数坐标的水平或垂直直线,例如 x=0.5x=0.5。FJ 挑选队伍必须使得可以用网将两队分开。奶牛们不愿意为此进行移动。

帮帮农夫吧!为 Farmer John 计算选择满足上述要求的红队和蓝队的方法数,对 109+710^9+7 取模。

输入格式

输入的第一行包含一个整数 NN

以下 NN 行每行包含两个空格分隔的整数 xix_iyiy_i。输入保证 xix_i 组成 1N1\ldots N 的一个排列,yiy_i 类似。

输出格式

输出一个整数,为选择满足上述要求的红队和蓝队的方法数,对 109+710^9+7 取模。

2
1 2
2 1
2
3
1 1
2 2
3 3
10
3
1 1
2 3
3 2
12
40
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32
33 33
34 34
35 35
36 36
37 37
38 38
39 39
40 40
441563023

提示

样例解释 1

我们可以选择红队为牛 1,蓝队为牛 2,或者相反。无论哪种情况,我们都可以用一个网将两支球队分开(例如,x=1.5x=1.5)。

样例解释 2

以下是所有的十种可能的将奶牛分队的方法;第 ii 个字符表示第 ii 头奶牛的队伍,R 表示红队,B 表示蓝队,或 . 表示第 ii 头奶牛不在一个队伍中。

RRB
R.B
RB.
RBB
.RB
.BR
BRR
BR.
B.R
BBR

样例解释 3

以下是所有的十二种可能的将奶牛分队的方法:

RRB
R.B
RBR
RB.
RBB
.RB
.BR
BRR
BR.
BRB
B.R
BBR

样例解释 4

确保输出答案对 109+710^9+7 取模。

测试点性质

  • 测试点 55N10N\le 10
  • 测试点 696-9N200N\le 200
  • 测试点 101310-13N3000N\le 3000
  • 测试点 142414-24:没有额外限制。