题目 20339

折射

查看题解 ↗GitHub ↗如何评测
题号
20339
标签
比赛NOIP
来源
2018 国庆雅礼集训 10-1

折射

refract.cpp/in/out

  • 时间限制:1s
  • 内存限制:128MB

题目描述

小 Y 十分喜爱光学相关的问题,一天他正在研究折射。

他在平面上放置了 nn 个折射装置,希望利用这些装置画出美丽的折线。折线将从某个装置出发,并且在经过一处装置时可以转向,若经过的装置坐标依次为 (x1,y1),(x2,y2),…,(xk,yk)(x_1, y_1), (x_2, y_2), \dots, (x_k, y_k),则必须满足:

  • ∀j∈(1,k], yj<yj−1\forall j \in (1, k],\ y_j < y_{j-1}
  • ∀j∈(2,k], xj−2<xj<xj−1\forall j \in (2, k],\ x_{j-2} < x_j < x_{j-1} 或 xj−1<xj<xj−2x_{j-1} < x_j < x_{j-2}

现在他希望你能告诉他,一共有多少种不同的光线能被他画出来,两种光线不同当且仅当经过的折射装置的集合不同。你只需要告诉他答案对 109+710^9 + 7 取模后的结果。

输入格式

第一行一个正整数 nn,表示折射装置的数量。

接下来 nn 行,每行两个整数 xi,yix_i, y_i 表示折射装置的坐标。

输出格式

输出一行一个整数,表示答案对 109+710^9 + 7 取模后的结果。

样例输入

文本
4
2 2
3 1
1 4
4 3

样例输出

文本
14

数据范围

  • 对于 10% 的数据:n≤700n \le 700,1≤xi,yi≤N1 \le x_i, y_i \le N。
  • 对于 20% 的数据:n≤1000n \le 1000,1≤xi,yi≤N1 \le x_i, y_i \le N。
  • 对于 50% 的数据:n≤4000n \le 4000,∣xi∣,∣yi∣≤109|x_i|, |y_i| \le 10^9。
  • 对于 100% 的数据:n≤6000n \le 6000,∣xi∣,∣yi∣≤109|x_i|, |y_i| \le 10^9。
  • 所有数据满足 ∀i≠j, xi≠xj\forall i \neq j,\ x_i \neq x_j 且 yi≠yjy_i \neq y_j。

数据下载

题目 20339 的公开数据

正在读取文件列表…

常用命令

题目 20339 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。