QOJ.ac

QOJ

Time Limit: 4.0 s Memory Limit: 960 MB Total points: 100 Hackable ✓

#15833. DJ Nicholas

الإحصائيات

DJ Nicholas 是一位在圣诞节和新年活动中广受欢迎的 DJ。DJ Nicholas 有一套经过实战检验的播放列表制作流程,但他需要帮助来准备这些列表。他的实战流程如下:

首先,他拥有 $k$ 段简短的圣诞歌曲片段。由于 $k$ 最多为 26,他将字母表的前 $k$ 个字母分配给这些歌曲(按它们首次播放的顺序)。

他通过不断重复这 $k$ 首歌曲的片段来创建一个无限循环的主音轨 $t$。为了防止音轨过于单调,每当 DJ Nicholas 在主音轨中重复歌曲片段时,他都会先通过将当前的第一首歌移到片段末尾来改变顺序。

例如,如果 $k = 4$,那么他的歌曲片段可以用字符串 ABCD 表示,主音轨 $t$ 可以表示为无限字符串 “ABCD BCDA CDAB DABC ABCD ...”(空格仅为可读性而设,实际并不存在于 $t$ 中)。

他准备的播放列表可以用一个长度为 $n$ 的字符串表示,初始时全部为空白。接下来,他对播放列表执行 $q$ 次操作,每次操作属于以下两种形式之一:

  • “+ $i$ $a$ $b$”。这会将播放列表中从 $a$ 到 $b$(包含 $a$ 和 $b$)的歌曲片段替换为 $t$ 中从位置 $i$ 开始、长度为 $b - a + 1$ 的子串。
  • “? $a$ $b$”。这会输出 $k$ 个整数;其中第 $j$ 个整数表示在播放列表从 $a$ 到 $b$(包含 $a$ 和 $b$)的范围内,由字母表第 $j$ 个字母所代表的歌曲出现的次数。

DJ Nicholas 需要这些信息来追踪他需要支付的版税。

在此,我们假设主音轨和播放列表均从 1 开始索引。

你可以参考样例输入/输出,查看 DJ Nicholas 的实战流程是如何运作的!

帮助 DJ Nicholas 回答上述查询,并确保他的观众在活动中尽兴而归!

输入格式

输入的第一行包含三个由空格分隔的整数 $k$、$n$ 和 $q$。

接下来 $q$ 行,描述各项操作。每行要么是 “+ $i$ $a$ $b$” 形式,要么是 “? $a$ $b$” 形式,对应上述操作。

输出格式

对于每个 “? $a$ $b$” 形式的操作,输出一行包含 $k$ 个由空格分隔的整数,对应于该查询的答案。

数据范围

$1 \le k \le 26$ $1 \le n \le 10^9$ $1 \le q \le 10^5$ 每次操作中 $1 \le i \le 10^9$ 每次操作中 $1 \le a \le b \le n$

样例

输入 1

4 10 4
+ 7 2 6
+ 2 8 10
+ 9 1 4
? 4 9

输出 1

1 2 1 1

说明

在此,$k = 4$ 且 $n = 10$。因此,$t = \text{ABCDBCDACDABDABC} \dots$

播放列表最初为空,我们用该字符串表示(其中空白用星号表示):


如果我们执行操作 “+ 7 2 6”,我们会注意到:

  • 我们需要一个长度为 $6 - 2 + 1 = 5$ 的子串。
  • 这里我们在 $t$ 中高亮显示从位置 7 开始、长度为 5 的子串: $\text{ABCDBCDACDABDABC} \dots$
  • 将播放列表中的第 2 到第 6 首歌曲替换为该子串,此时播放列表变为: DACDA*

你可以验证在执行 “+ 2 8 10” 后,我们得到以下字符串: DACDABCD

然后,通过操作 “+ 9 1 4”,我们覆盖了之前的一些歌曲,最终得到: CDABDA*BCD

之后,我们查询 “? 4 9”,因此我们查看当前播放列表中第 4 到第 9 首歌曲: CDABDA*BCD

我们输出的四个整数应该是 A、B、C 和 D 在此范围内当前出现的次数。因此,输出应该是 “1 2 1 1”。

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.