QOJ.ac

QOJ

时间限制: 3 s 内存限制: 1024 MB 总分: 150

#9098. 外星仙人掌

统计

某个外星球的表面大部分是沙漠,因此很少下雨。这个星球上所有的植物都是仙人掌。由于雨水极为稀少,仙人掌进化出了相互合作储存水的方法。

星球上的某个区域是只有上下、左右方向的二维平面。这个区域中有 $N$ 株仙人掌紧挨着排成一行。每株仙人掌的宽度都是 $1$ 米,高度可以不同。为了美化环境,只保留第 $S$ 株到第 $E$ 株仙人掌,之后下了足够多的雨,使仙人掌上方所有能蓄水的区域都积满了水。积水情况如下图所示。图中箭头所标范围之外的仙人掌应视为已被移除。

problem_9098_8d8fb07b8bfc98519f9cf0827921f775.png

请编写程序,给定仙人掌的高度和保留下来的仙人掌范围,以面积计算积水量。最多会给出 $Q$ 个范围。每个范围都始终作用于所有仙人掌均存在的初始状态。

你需要实现以下函数。

  • void init( int H[] ):只在最开始调用一次。$H$ 是一个大小为 $N$ 的数组(向量),按从左到右的顺序存放仙人掌的高度。$N$ 是仙人掌的数量。
  • int query( int S, int E ):当只保留第 $S$ 株到第 $E$ 株仙人掌并下了足够多的雨后,返回积水的面积($1 \le S \le E \le N$)。这个函数最多调用 $Q$ 次。所有调用相互独立,即一次调用中移除仙人掌不会影响其他调用。

实现细节

你必须提交恰好一个名为 cactus.cpp 的文件。该文件中必须实现以下函数。

  • void init( int H[] )
  • long long query( int S, int E )

这些函数应按上文所述工作。你可以定义其他函数供内部使用。提交的代码不得进行输入输出,也不得访问其他文件。

评测程序示例

提供的评测程序按以下格式读取输入。

  • 第 1 行:$N$、$Q$。
  • 下一行:$N$ 个正整数,按从左到右的顺序表示仙人掌的高度。
  • 接下来 $Q$ 行:两个正整数 $S,E$,表示只保留第 $S$ 株到第 $E$ 株仙人掌时下雨($1 \le S \le E \le N$)。

提供的评测程序将你的 query() 函数返回的值逐行输出,每行一个。

数据范围

  • $1 \le N \le 500\,000$,$1 \le Q \le 500\,000$;仙人掌的高度至少为 $1$,至多为 $10^9$。

子任务

子任务 1 (13 分)

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

子任务 2 (12 分)

  • $1 \le N \le 5\,000$

子任务 3 (22 分)

  • 仙人掌的高度至多为 $20$。

子任务 4 (34 分)

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

子任务 5 (69 分)

  • 除原有数据范围外,没有额外限制。

样例

输入格式 1

10 3
1 3 2 5 1 4 6 2 1 3
2 8
2 4
7 9

说明

对于上述输入,你的代码的执行过程示例如下。

调用 结果
init( {1, 3, 2, 5, 1, 4, 6, 2, 1, 3} ) 初始调用
query( 2, 8 ) 查询调用,返回值 $6$
query( 2, 4 ) 查询调用,返回值 $1$
query( 7, 9 ) 查询调用,返回值 $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.