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.