QOJ.ac

QOJ

时间限制: 5 s 内存限制: 512 MB 总分: 100

#4700. 消毒喷雾

统计

JOI 制药公司(IOI Pharmaceutical Co., Ltd.)的 JOI 先生正在忙于开发新型杀菌喷雾的实验工作。

在该公司中,杀菌喷雾的强度定义如下:当我们对一个含有 $y$ 个细菌的培养皿使用一次强度为 $x$ 的喷雾时,该培养皿上的细菌数量变为 $\lfloor y/x \rfloor$,即 $y/x$ 向下取整得到的整数。现在,公司开发出了一种强度为 $K$ 的新喷雾。为了测试这种喷雾的性能,他们计划进行一项实验。他们使用了编号为 $1, \dots, N$ 的 $N$ 个培养皿。实验开始时,培养皿 $i$ 上有 $C_i$ 个细菌。在实验中,他们按顺序执行 $Q$ 次操作。每次操作为以下三种之一:

  • 操作 1:选择一个培养皿 $a$ 和一个整数 $b$,调整培养皿 $a$ 上的细菌数量。执行此操作后,培养皿 $a$ 上的细菌数量变为 $b$。
  • 操作 2:选择两个整数 $l, r$,满足 $1 \le l \le r \le N$。对培养皿 $l, l + 1, \dots, r - 1, r$ 各喷洒一次喷雾。
  • 操作 3:选择两个整数 $l, r$,满足 $1 \le l \le r \le N$。计算培养皿 $l, l + 1, \dots, r - 1, r$ 上的细菌数量之和,并记录下来。

JOI 先生对假设新喷雾按预期工作后的实验结果感到好奇。由于你是一名优秀的程序员,他请求你预测实验的结果。

编写一个程序,确定实验中操作 3 所记录的数值。

输入格式

从标准输入读取以下数据:

  • 第一行包含三个空格分隔的整数 $N, Q, K$。这表示喷雾的强度为 $K$,培养皿的数量为 $N$,实验中的操作次数为 $Q$。
  • 接下来的 $N$ 行中,第 $i$ 行($1 \le i \le N$)包含一个整数 $C_i$。这表示实验开始时培养皿 $i$ 上的细菌数量为 $C_i$。
  • 接下来的 $Q$ 行中,第 $i$ 行($1 \le i \le Q$)包含三个空格分隔的整数 $S_i, T_i, U_i$。它们表示实验中第 $i$ 次操作的信息:
    • 当 $S_i = 1$ 时,表示执行操作 1,其中 $a = T_i, b = U_i$。
    • 当 $S_i = 2$ 时,表示执行操作 2,其中 $l = T_i, r = U_i$。
    • 当 $S_i = 3$ 时,表示执行操作 3,其中 $l = T_i, r = U_i$。

输出格式

输出实验中操作 3 所记录的数值。输出的行数应等于实验中执行操作 3 的次数。

数据范围

所有输入数据满足以下条件:

  • $1 \le N \le 100\,000$
  • $1 \le Q \le 100\,000$
  • $1 \le K \le 10$
  • $0 \le C_i \le 1\,000\,000\,000$ ($1 \le i \le N$)
  • $1 \le S_i \le 3$ ($1 \le i \le Q$)
  • 当 $S_i = 1$ 时,$1 \le T_i \le N$ 且 $0 \le U_i \le 1\,000\,000\,000$ ($1 \le i \le Q$)
  • 当 $S_i = 2, 3$ 时,$1 \le T_i \le U_i \le N$ ($1 \le i \le Q$)

子任务

子任务 1 [5 分]

  • $1 \le N \le 3\,000$
  • $1 \le Q \le 3\,000$

子任务 2 [10 分]

  • $C_i \le 1$ ($1 \le i \le N$)
  • 当 $S_i = 1$ 时,$U_i \le 1$ ($1 \le i \le Q$)

子任务 3 [10 分]

  • $K = 1$

子任务 4 [75 分]

  • 无附加限制。

样例

样例输入 1

5 10 3
1
2
8
1
3
1 2 5
2 3 5
3 2 5
2 1 4
1 3 2
3 3 5
1 2 4
2 1 2
1 1 4
3 1 5

样例输出 1

8
3
8

样例输入 2

15 10 3
25
87
32
89
24
99
57
88
10
57
65
42
66
98
13
3 9 12
1 7 15
3 2 9
2 1 14
3 10 13
1 10 6
2 14 14
1 7 96
3 14 15
3 10 12

样例输出 2

174
444
76
23
41

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.