QOJ.ac

QOJ

Time Limit: 4.0 s Memory Limit: 1024 MB Total points: 100

#8919. Рамазан 與高麗菜

Statistics

Рамазан 決定從事一項正經生意:種植高麗菜。

種植高麗菜的田地是一個無限大的方格網。每個格子都可以種一顆高麗菜。

Рамазан 只種了田地的一部分。他計畫使用幾個長方形區域,結果發現其中一些可能重疊。若格子位於至少一個長方形內,該格子就屬於種植區域。

形式上,Рамазан 選擇了 $n$ 個長方形區域 $(x_i^L,y_i^L,x_i^R,y_i^R)$($x_i^L\le x_i^R$,$y_i^L\le y_i^R$,$1\le i\le n$)。若存在至少一個選定的長方形 $i$($1\le i\le n$),使得 $x_i^L\le x\le x_i^R$ 且 $y_i^L\le y\le y_i^R$,格子 $(x,y)$ 就有高麗菜。

problem_8919_1c4811762284df692d82baa95a6e48df.png

Рамазан 以前是程式設計師(也是優勝者),因此他決定使用具有人工智慧的機器人定期照料種植區域。一個機器人可以負責任意的水平格子區間 $(x_1^{robot},x_2^{robot},y^{robot})$,也就是所有滿足 $x_1^{robot}\le x\le x_2^{robot}$ 且 $y=y^{robot}$ 的格子 $(x,y)$。

機器人只能在種植區域行駛,這一點很重要。他明白,為了讓機器人的數量最少,需要使用無法再擴展的水平區間。Рамазан 會在格子區間 $(x_1^{robot},x_2^{robot},y^{robot})$ 使用機器人,如果:

  • 所有滿足 $x_1^{robot}\le x\le x_2^{robot}$ 且 $y=y^{robot}$ 的格子 $(x,y)$ 都屬於種植區域;
  • 格子 $(x_1^{robot}-1,y^{robot})$ 不屬於種植區域;
  • 格子 $(x_2^{robot}+1,y^{robot})$ 不屬於種植區域。

你的任務是收集將在農場工作的機器人的重要統計資料。若存在一個機器人恰好負責區間 $(x_1,x_2,y)$,我們就稱數對 $(x_1,x_2)$ 在第 $y$ 列被服務。

  • 找出所有在某一列被服務的數對 $(x_1,x_2)$。
  • 對於每個這樣的數對 $(x_1,x_2)$,求它被服務的列數。
  • 對於每個這樣的數對 $(x_1,x_2)$,求它被服務的最大連續列數。換句話說,求最大的數 $k$,使得存在由 $k$ 個連續列組成的區間 $[y_1,y_2]$($y_2-y_1+1=k$),對所有 $y_1\le y\le y_2$ 的列,數對 $(x_1,x_2)$ 都在第 $y$ 列被服務。

輸入格式

每個測試包含多組輸入資料。第一行給定一個整數 $t$($1\le t\le200\,000$),表示資料組數。接下來是各組資料的描述。

每組資料的第一行給定一個整數 $n$($1\le n\le200\,000$),表示選定的長方形區域數量。

接下來 $n$ 行,每行給定四個整數 $x_i^L,y_i^L,x_i^R,y_i^R$($1\le x_i^L\le x_i^R\le10^9$,$1\le y_i^L\le y_i^R\le10^9$),描述選定的長方形區域。

以 $N$ 表示同一測試中所有資料組的 $n$ 之和。保證 $N\le200\,000$。

輸出格式

對每組資料,先輸出一個整數 $p$($p\ge1$),表示在某一列被服務的數對 $(x_1,x_2)$ 的數量。

接下來 $p$ 行,每行輸出四個整數 $x_1,x_2,cnt,k$($1\le x_1\le x_2\le10^9$,$0\le cnt,k\le10^9$)。$cnt$ 必須等於數對 $(x_1,x_2)$ 被服務的列數。$k$ 必須等於數對 $(x_1,x_2)$ 被服務的最大連續列數。

所有數對 $(x_1,x_2)$ 必須互不相同。每個在某一列被服務的數對都必須恰好輸出一次。可以按任意順序輸出數對。

子任務

對一組資料,以 $w$ 表示田地的寬度,即 $w=\max_{i=1}^n x_i^R$;以 $h$ 表示田地的高度,即 $h=\max_{i=1}^n y_i^R$。

子任務 分數 限制: $n,N$ 限制: $w,h$ 額外限制 必要子任務
$1$ $4$ $n=1$
$2$ $8$ $h=1$
$3$ $8$ $n\le30$, $N\le3000$ $w,h\le10$ $t\le100$ 範例
$4$ $4$ $w,h\le5000$, $\sum wh\le25\cdot10^6$ 範例, $3$
$5$ $8$ $N\le3000$ 範例, $3$
$6$ $4$ $N\le10\,000$ 範例, $3,5$
$7$ $8$ 所有 $[x_i^L,x_i^R]$ 相交 $1$
$8$ $8$ $y_i^L=1$ $2$
$9$ $8$ 長方形互不相交 $1$
$10$ $8$ 對所有 $1\le i,j\le n$ 及所有 $y\in[y_i^L,y_i^R]\cap[y_j^L,y_j^R]$,都有 $[x_i^L,x_i^R]\nsubseteq[x_j^L,x_j^R]$ $1,9$
$11$ $8$ 所有區間 $[x_i^L,x_i^R+1]$ 要麼互相包含,要麼不相交 $1$
$12$ $8$ $N\le50\,000$ 範例, $3,5\text{–}6$
$13$ $8$ $N\le100\,000$ 範例, $3,5\text{–}6,12$
$14$ $8$ $N\le200\,000$ 範例, $1\text{–}13$
  • 如果你的解答在某個測試中錯誤地求出在某一列被服務的數對 $(x_1,x_2)$ 的集合,就會得到「答案錯誤」的判定。
  • 如果在該子任務及其必要子任務的所有測試中,解答:

    • 正確求出集合,但並非所有 $cnt$ 都正確,則得到該子任務分數的 $50\%$;
    • 正確求出集合及所有 $cnt$,但並非所有 $k$ 都正確,則得到該子任務分數的 $75\%$;
    • 正確求出集合、所有 $cnt$ 及所有 $k$,則得到該子任務分數的 $100\%$。

請注意,即使是為了取得子任務的部分分數,仍須為每個數對 $(x_1,x_2)$ 輸出某些 $cnt$ 和 $k$ 的值,但不必是正確的值。

範例

輸入格式 1

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

輸出格式 1

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

說明

problem_8919_7ab6f05c6cd69bfc89bf226b1cb9c55e.png

題目中的測試的第一組與第二組輸入資料

第一組資料會在區間 $(2,3,2)$、$(2,4,3)$、$(3,4,4)$ 使用機器人。因此,數對 $(2,3)$、$(2,4)$、$(3,4)$ 在某一列被服務,且每個數對都恰好在一列被服務。

第二組資料會在區間 $(2,2,1)$、$(2,4,2)$、$(2,2,3)$ 使用機器人。因此,數對 $(2,2)$、$(2,4)$ 在某一列被服務。數對 $(2,2)$ 在第 $1,3$ 列被服務,數對 $(2,4)$ 在第 $2$ 列被服務。

problem_8919_85bab0c516e76baaa229e74aa7a716a0.png

題目中的測試的第三組與第四組輸入資料

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.