QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 512 MB Points totaux : 100 Hackable ✓

#17637. 羊群的行进

Statistiques

Sasha 厌倦了繁重的城市生活,决定搬到乡下。为了打发时间,他决定养羊。为此,他在村里买了一块矩形场地,可以表示为一个 $n \times m$ 的网格,行从上到下编号为 $1$ 到 $n$,列从左到右编号为 $1$ 到 $m$。

在场地上,Sasha 买了几只羊,每只羊被分配到一行。最初,第 $i$ 只羊位于坐标 $(i, a_i)$ 的单元格中(第 $i$ 行,第 $a_i$ 列)。Sasha 发现羊只按以下规则水平移动:

  • 如果场地只有一列,羊不会移动。
  • 最初,第 $i$ 只羊位于单元格 $(i, a_i)$,每只羊都有一个初始移动方向——向左或向右。没有羊位于第一列且向左移动,也没有羊位于最后一列且向右移动。
  • 每过一秒,如果羊向左移动,它就向左移动一列;否则,它向右移动一列。
  • 如果羊移动后到达第 $1$ 列且正在向左移动,或者到达最后一列且正在向右移动,它会改变方向。因此,羊永远不会离开场地边界。
img

这里有一个羊移动的例子,最初第一只羊在第 $1$ 列并向右移动,第二只羊在第 $3$ 列并向左移动。第一张图显示了开始时的状态,第二张图显示了 1 秒后的状态,第三张图显示了从移动开始 2 秒后的状态,第四张图显示了 3 秒后的状态。

Sasha 不喜欢羊如此混乱地移动;他希望所有羊都能统一移动。这意味着所有羊都应该在同一列,并且具有相同的移动方向。为了实现这一点,Sasha 可以通过以下方式对场地进行多次(可能为零)修剪:

  • 他选择一个时间 $t$(自羊开始移动以来经过的秒数)和修剪后场地将保留的列数 $x$。
  • 在时间 $t$,所有羊必须严格位于 $n \times x$ 的场地内。这意味着对于从 $1$ 到 $n$ 的任何 $i$,第 $i$ 只羊在时间 $t$ 必须位于单元格 $(i, y_i)$,其中 $1 \le y_i \le x$。否则,这种场地修剪是不允许的。
  • 在此操作之后,从时间 $t$ 开始,场地上的列数减少到 $x$。
  • 每只位于最后一列且向右移动的羊会改变其方向。

修剪过程的详细示例在说明部分描述。

Sasha 想知道是否可以通过多次修剪场地来实现所有羊统一移动。如果可能,Sasha 想知道场地中可以保留的最大列数是多少,以及他具体该如何实现。帮助 Sasha 解决这个问题!

输入格式

第一行包含一个整数 $T$ ($1 \le T \le 3$),表示需要输出关于答案的什么信息。详细描述见“输出格式”。

第二行包含两个整数 $n$ 和 $m$ ($2 \le n \le 200,000, 2 \le m \le 10^9$),表示场地的行数和列数。

第三行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le m$),表示羊最初所在的列号。

第四行包含一个长度为 $n$ 的字符串 $s$,仅由字符 L 和 R 组成,其中第 $i$ 个字符如果是 L,表示第 $i$ 只羊最初向左移动;如果是 R,表示第 $i$ 只羊最初向右移动。保证没有位于第一列的羊向左移动,也没有位于第 $m$ 列的羊向右移动。

输出格式

在第一行,如果 Sasha 无法实现所有羊统一移动,输出 "No"(不带引号)。否则,输出 "Yes"(不带引号)。

如果 $T = 2$ 或 $T = 3$,则在第二行输出 Sasha 可以留在场地上的最大列数,以便所有羊统一移动。如果 $T = 1$,则不应输出此项。

如果 $T = 3$,在第三行输出数字 $q$ ($0 \le q \le 10^6$),表示 Sasha 需要修剪场地的次数。在接下来的 $q$ 行中,输出修剪的描述。

对于每次场地修剪的描述,在一行中输出两个整数 $t$ 和 $x$ ($0 \le t \le 10^{18}, 1 \le x < m$),其中 $t$ 是 Sasha 需要修剪场地的时间(从羊开始移动的最开始算起),$x$ 是此操作后场地将保留的列数。

操作必须按 $t$ 的非递减顺序输出。在每次后续修剪中,$x$ 必须小于前一次修剪的 $x$。

如果有多种合适的修剪序列,可以输出其中任何一种。

可以证明,在给定的约束条件下,如果存在解,则存在符合给定限制的解。

如果 $T = 1$ 或 $T = 2$,请勿输出修剪描述。

样例

输入格式 1

3
2 3
1 3
RL

输出格式 1

Yes
2
1
3 2

输入格式 2

3
2 3
1 2
RL

输出格式 2

No

输入格式 3

3
3 5
1 3 5
RRL

输出格式 3

Yes
3
2
1 4
2 3

输入格式 4

2
3 5
1 3 5
RRL

输出格式 4

Yes
3

输入格式 5

1
3 5
1 3 5
RRL

输出格式 5

Yes

输入格式 6

3
3 7
3 3 5
RRL

输出格式 6

Yes
4
3
0 6
0 5
1 4

说明

考虑第三个样例:

羊在零秒时的状态。

problem_17637_2.png

羊在 1 秒时的状态。

problem_17637_3.png

将场地修剪为 4 个单元格。

problem_17637_4.png

羊在 2 秒时的状态。

problem_17637_5.png

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.