#P17023. [ROI 2026 Day2] 夜,街道,路灯,药房

[ROI 2026 Day2] 夜,街道,路灯,药房

题目描述

一条长街上竖立着一些灯柱,上面安装着 nn 盏路灯。我们沿街建立坐标系。第 ii 盏路灯所在的灯柱位于坐标 xix_i 处。在本题的前六个子任务中(共占 85 分),任意两盏路灯不会安装在同一个灯柱上,即所有 xix_i 互不相同。在最后两个子任务中,每个灯柱上至多可以有两盏路灯。

为了照亮街道,可以点亮其中一部分路灯。被点亮的第 ii 盏路灯具有亮度 sis_i。它发光时能够从所在灯柱开始,照亮一段长度为 sis_i 米的连续街道。每盏被点亮的路灯既可以转向左边,也可以转向右边。若将第 ii 盏路灯向左照,它照亮区间 [xisi,xi][x_i - s_i, x_i];若向右照,则照亮区间 [xi,xi+si][x_i, x_i + s_i]

我们选择一个非空的路灯集合来照亮一段街道。如果能够将集合中的每盏路灯选择向左或向右照射,使得以下两个条件同时成立,则称该集合是经济的

  • 被照亮的区间拼接成一段连续不断的街道区间;
  • 任意长度非零的区间不会被两盏或以上的路灯同时照亮。

下图展示了样例 2 中包含两盏路灯的经济子集及其照亮连续区间的方案。每盏路灯上方标注了其亮度。

:::align{center} :::

请求出路灯的经济子集个数。输出答案对 109+710^9+7 取模的结果。

输入格式

第一行包含一个整数 nn1n1051 \le n \le 10^5),表示路灯的数量。接下来描述这些路灯。

接下来的 nn 行,每行包含两个整数 xix_isis_i,分别表示第 ii 盏路灯所在灯柱的坐标及其亮度(1xi51051 \le x_i \le 5 \cdot 10^51si51051 \le s_i \le 5 \cdot 10^5x1x2xnx_1 \le x_2 \le \ldots \le x_n)。

保证同一灯柱上至多安装两盏路灯,即对任意坐标 vv,满足 xi=vx_i = vii 不超过两个。

输出格式

输出一个整数——路灯的经济子集个数对 109+710^9 + 7 取模的结果。

2
2 3
7 2
3
3
1 1
3 1
4 2
6
5
3 2
4 2
5 2
6 2
7 2
10
4
3 2
7 4
7 4
8 2
8
5
1 2
1 3
2 1
2 2
4 1
19

提示

说明

在第一个样例中,所有三个非空路灯子集都是合法的。

在第二个样例中,除了集合 {1,2,3}\{1, 2, 3\} 以外,其余所有子集都是合法的。

子任务

引入变量 tt,表示可能位于同一坐标 xix_i 的路灯的最大数量。

t=1t = 1,则 x1<x2<<xnx_1 < x_2 < \ldots < x_n

t=2t = 2,则 x1x2xnx_1 \le x_2 \le \ldots \le x_n,且若 xi=xi+1x_i = x_{i+1},那么 xi1<xix_{i-1} < x_ixi+1<xi+2x_{i+1} < x_{i+2}(在对应下标存在的情况下)。

子任务 分数 tt nn 额外限制 依赖子任务
1 10 t=1t = 1 n10n \le 10
2 15 对任意两盏不同的灯 i,ji, j,满足 xisixjx_i - s_i \neq x_jxi+sixjsjx_i + s_i \neq x_j - s_j
3 对任意两盏不同的灯 i,ji, j,满足 sisjs_i \neq s_j
4 对任意两盏不同的灯 i,ji, j,满足 si=sjs_i = s_j
5 10 n1000n \le 1000 si,xi1000s_i, x_i \le 1000
6 20 1–5
7 10 t=2t = 2 xi=xi+1x_i = x_{i+1},则 sisi+1s_i \ne s_{i+1} 1–6
8 5 1–7

翻译由 DeepSeek V4 Pro 完成