QOJ.ac

QOJ

حد الوقت: 4 s حد الذاكرة: 1024 MB مجموع النقاط: 100

#2164. 景观生成器

الإحصائيات

Interactive Creative Players Collective (ICPC) 正在开发一款新的电脑游戏,他们希望在游戏中生成逼真的地貌。ICPC 的一位工程师提出了一种受地质过程启发的算法。该算法从平坦的地貌开始,通过抬升或降低连续的区块来反复修改地貌,从而形成地垒(抬升的区块)和地堑(降低的区块)。需要抬升或降低的区块是随机选择的。ICPC 希望通过这种方式获得逼真的地貌。

你的任务是解析任何此类修改序列,并输出最终的地貌。地貌由 $n$ 个整数高度值序列表示,对应 $x$ 轴上从 $1$ 到 $n$ 的每个整数点。图 E.1 展示了一个通过连接高度值并用线段表示的示例。

图 E.1:样例输入 1 生成的地貌示意图。

最初,所有 $n$ 个点的高度均为 $0$。这个平坦的形状会经历一系列修改。每次修改都会应用以下四种操作之一,并带有两个整数参数 $x_1 \le x_2$:

  • R: Raise(抬升)—— 将 $x_1$ 到 $x_2$(含)之间所有点的高度增加 $1$。
  • D: Depress(降低)—— 将 $x_1$ 到 $x_2$(含)之间所有点的高度减少 $1$。
  • H: Hill(山丘)—— 在 $x_1$ 和 $x_2$ 之间添加一个新的线性形状的山丘。
  • V: Valley(山谷)—— 在 $x_1$ 和 $x_2$ 之间添加一个新的线性形状的山谷。

向当前地貌添加山丘的方法如下:点 $x_1$ 和 $x_2$ 的高度增加 $1$。如果 $x_2 - x_1 > 1$,则点 $x_1 + 1$ 和 $x_2 - 1$ 的高度增加 $2$。如果 $x_2 - x_1 > 3$,则点 $x_1 + 2$ 和 $x_2 - 2$ 的高度增加 $3$,依此类推。图 E.2 展示了一个示例。添加山谷的方法相同,只是高度改为减少。高度的最大变化发生在 $x_1$ 和 $x_2$ 的中间。如果 $x_2 - x_1$ 为奇数,则会有两个相邻的点达到最大变化,否则只有一个点。

输入格式

输入的第一行包含两个整数 $n$ 和 $k$,其中 $n$ ($1 \le n \le 200\,000$) 是点的数量,$k$ ($0 \le k \le 200\,000$) 是修改次数。沿 $x$ 轴的 $n$ 个点编号为 $1$ 到 $n$。接下来的 $k$ 行描述了修改操作。每行包含一个字符 $c$ 和两个整数 $x_1$ 和 $x_2$,其中 $c$(R、D、H 或 V 之一)指定操作类型,$x_1$ 和 $x_2$ ($1 \le x_1 \le x_2 \le n$) 指定其参数。

输出格式

输出 $n$ 行,其中第 $i$ 行包含按给定顺序应用所有修改后点 $i$ 的高度。

图 E.2:样例输入 2 生成的地貌示意图。

样例

样例输入 1

20 13
H 12 13
D 5 18
R 13 14
R 8 16
H 2 3
V 10 19
V 3 13
R 8 13
V 3 10
D 5 18
V 11 12
R 1 6
R 14 19

样例输出 1

1
2
0
-3
-7
-9
-11
-9
-7
-6
-6
-5
-3
-4
-5
-4
-4
-3
0
0

样例输入 2

7 1
H 1 6

样例输出 2

1
2
3
3
2
1
0

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.