QOJ.ac

QOJ

Time Limit: 3.0 s Memory Limit: 512 MB Total points: 100

#18418. 兩場考試

Statistics

班上有 $N$ 名學生。每位學生根據目前的班級排名被分配了一個從 $0$ 到 $N - 1$ 的編號。也就是說,學生 $i$(對於所有 $0 \le i \le N - 1$)目前的班級排名為 $i$。其中排名 $0$ 為最好,排名 $N-1$ 為最差。

最近舉行了英語和數學考試。學生 $i$(對於所有 $0 \le i \le N - 1$)在英語考試中的排名為 $A[i]$,在數學考試中的排名為 $B[i]$。$A$ 和 $B$ 皆為長度為 $N$ 的排列。

什麼是長度為 $N$ 的排列? 在本題中,長度為 $N$ 的排列 $P$ 是一個長度為 $N$ 的陣列,滿足對於所有 $0 \leq i \leq N - 1$ 皆有 $0 \leq P[i] \leq N-1$,且對於所有 $0 \leq i < j \leq N - 1$ 皆有 $P[i] \neq P[j]$。例如,$[2,1,0]$ 是長度為 $3$ 的排列,但 $[1,2,3]$ 和 $[2,0,2]$ 不是長度為 $3$ 的排列。

老師想要重新排列學生的名次。新的排名可以用一個排列 $P$ 來表示。

對於每位學生 $i$,新的班級排名必須滿足以下條件中的至少一個

  • 對於所有滿足 $P[j] < P[i]$ 的 $j$,學生 $j$ 在英語考試中的表現優於學生 $i$ ($A[j] < A[i]$),或者
  • 對於所有滿足 $P[j] < P[i]$ 的 $j$,學生 $j$ 在數學考試中的表現優於學生 $i$ ($B[j] < B[i]$)。

警告:該條件僅適用於滿足 $P[j] < P[i]$ 的 $j$。對於那些 $P[j] \geq P[i]$ 的 $j$ 沒有限制。對於每位學生 $i$,在評估條件是否滿足時,他們必須先選擇一個科目,並針對該科目與所有學生 $j$ 進行比較。對於同一位學生 $i$,在與不同 $j$ 比較時,所選擇的科目必須相同。在評估學生 $i$ 的條件時,不能中途切換科目。

新班級排名的「不滿意度」定義為所有學生中排名下降幅度最大者。換句話說,不滿意度為 $P[i] - i$ 的最大值(對於所有 $0 \leq i \leq N - 1$)。

警告:不滿意度是 $P[i] - i$ 的最大值,$i - P[i]$ 的值不會影響不滿意度。

請找出新班級排名可能達到的最小不滿意度。

實作細節

你應該實作以下函式:

int minimum_dissatisfaction(int N, std::vector<int> A, std::vector<int> B)
  • $N$:學生人數。
  • $A$:一個長度為 $N$ 的陣列,描述英語考試的排名。
  • $B$:一個長度為 $N$ 的陣列,描述數學考試的排名。
  • 此函式應回傳新班級排名的最小不滿意度。
  • 此函式將被呼叫恰好一次。

資料範圍

  • $1 \leq N \leq 5\;000\;000$。
  • $0 \leq A[i], B[i] \leq N - 1$,對於所有 $0 \leq i \leq N - 1$。
  • $A[i] \neq A[j]$,對於所有 $0 \leq i < j \leq N - 1$。
  • $B[i] \neq B[j]$,對於所有 $0 \leq i < j \leq N - 1$。

子任務

  1. (3 分) $N \leq 8$。
  2. (4 分) $N \leq 20$。
  3. (13 分) $N \leq 500$。
  4. (12 分) $N \leq 3000$,$A[i] + B[i] = N - 1$,對於所有 $0 \leq i \leq N - 1$。
  5. (19 分) $N \leq 3000$。
  6. (15 分) $N \leq 100\;000$,$A[i] + B[i] = N - 1$,對於所有 $0 \leq i \leq N - 1$。
  7. (17 分) $N \leq 100\;000$。
  8. (17 分) 無額外限制。

說明:對於子任務 8,僅評測程式本身就保證會消耗 3000ms 時間限制中的 1500ms。

範例

考慮以下呼叫:

minimum_dissatisfaction(5, [3, 0, 4, 1, 2], [0, 3, 2, 4, 1])

在此範例中,其中一種分配新排名的方式為 $P = [0, 2, 3, 4, 1]$。

考慮學生 $1$,其 $P[1] = 2$。所有滿足 $P[j] < P[1]$ 的學生 $j$,其數學排名都優於學生 $1$,因此該學生滿足班級排名條件。

接著,考慮學生 $2$,其 $P[2] = 3$。所有滿足 $P[j] < P[2]$ 的學生 $j$,其英語排名都優於學生 $2$,因此該學生也滿足班級排名條件。

可以驗證所有其他學生也都滿足班級排名條件。

新排名的不滿意度為 $1$。沒有其他不滿意度更低的新排名,因此該函式應回傳 $1$。

範例評測程式

輸入格式:

N
A[0] A[1] ... A[N - 1]
B[0] B[1] ... B[N - 1]

輸出格式:

一個代表 minimum_dissatisfaction 回傳值的整數。

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.