QOJ.ac

QOJ

時間限制: 3.0 s 記憶體限制: 1024 MB 總分: 100 可 Hack ✓

#17851. 稳定配置

统计

在建立了城市并举行了祭典之后,人们将目光投向了隐藏在光流中更深层次的秩序。

他们雕刻出顺应光流路径的形状,并研究这些图案,寻找其中交织的和谐规律。

但他们很快发现,并非所有的图案都能带来和谐。有些图案失去了平衡并崩溃了。

为了重新找到平衡,他们一次又一次地研究并改进他们的设计。

追寻他们留下的排列,重建和谐之光的图案。


岛民们通过在 $N \times N$ 的网格上放置灯来进行实验,试图寻找稳定的配置。从上往下数第 $r$ 行、从左往右数第 $c$ 列的单元格表示为 $(r, c)$。

如果一个配置满足以下条件,则被认为是稳定的(stable):

  • 每行恰好有一盏灯,每列也恰好有一盏灯。
  • 不存在不稳定的模式。
    • 当存在三盏灯分别位于 $(r_1, c_1), (r_2, c_2), (r_3, c_3)$,且满足 $r_1 < r_2 < r_3$ 且 $c_1 > c_2 > c_3$ 时,就会出现不稳定模式

例如,在下图展示的例子中,左侧的配置是稳定的。右侧的配置是不稳定的,因为 $(1, 5), (2, 2), (3, 1)$ 这三个单元格形成了一个不稳定模式。

为了探索更精细的排列,岛民们引入了以下形式的附加限制:

  • 在前 $c$ 列(从第 1 列到第 $c$ 列)中,放置的 $c$ 盏灯的最大行索引必须恰好为 $r$。

他们有兴趣观察随着这些限制的添加或删除,稳定配置的数量会如何变化。

输入格式

第一行包含两个空格分隔的整数 $N$ 和 $Q$,分别表示网格的大小和询问的数量。

接下来的 $Q$ 行,每行包含以下格式之一的询问:

  • 1 r_i c_i:添加一个新的限制。在第 1 列到第 $c_i$ 列中放置的 $c_i$ 盏灯中,最大行索引必须恰好为 $r_i$。
  • 2 x_i:移除在第 $x_i$ 次询问中添加的限制。
  • 3:输出满足当前所有生效限制的稳定结构的数量。

你可以假设在询问开始之前没有任何限制。

输出格式

对于每个类型为 3 的询问,输出单行,包含满足当前所有生效限制的稳定结构数量模 $10^9 + 7$ 的结果。

数据范围

设 $t_i$ 表示第 $i$ 次询问的类型。

  • $3 \le N \le 3 \times 10^5$
  • $1 \le Q \le 3 \times 10^5$
  • $1 \le t_i \le 3$ ($1 \le i \le Q$)
  • $1 \le r_i \le N$ ($1 \le i \le Q, t_i = 1$)
  • $1 \le c_i \le N$ ($1 \le i \le Q, t_i = 1$)
  • $1 \le x_i < i$ ($1 \le i \le Q, t_i = 2$)
  • $t_{x_i} = 1$ ($1 \le i \le Q, t_i = 2$)
  • $x_i \ne x_j$ ($1 \le i < j \le Q, t_i = t_j = 2$)
  • 至少存在一个类型为 3 的询问。

子任务

  • 子任务 1(4 分):$N = 3, Q \le 400$
  • 子任务 2(7 分):$N \le 8, Q \le 400$
  • 子任务 3(10 分):$Q = 1$
  • 子任务 4(23 分):$N \le 400, Q \le 400$
  • 子任务 5(25 分):$N \le 2000, Q \le 2000$
  • 子任务 6(13 分):$Q \le 2$
  • 子任务 7(18 分):无附加限制。

样例

输入样例 1

3 8
3
1 1 1
3
2 2
1 3 1
3
1 1 3
3

输出样例 1

5
2
1
0

输入样例 2

5 11
1 4 3
1 5 2
3
2 2
3
1 3 1
1 3 2
1 5 5
3
2 6
3

输出样例 2

0
18
2
6

输入样例 3

20 1
3

输出样例 3

564120378

输入样例 4

20 2
1 15 10
3

输出样例 4

936990054

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.