QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 512 MB مجموع النقاط: 25 الصعوبة: [عرض]

#18498. 不對稱性

الإحصائيات

Alice 和 Bob 將在一個有 $N$ 列 $M$ 行的網格上進行遊戲,其中 $M$ 為偶數。此外還有一個正整數 $K$。最初,網格中的每個格子都包含一個介於 $0$ 到 $K$(含)之間的數值,且每個格子皆為「未標記」狀態。玩家輪流進行遊戲,由 Alice 先手。當當前玩家無法進行移動時,遊戲結束。

在每位玩家的回合中,他們會選擇一個未標記的格子以及一個介於 $0$ 到 $K$(含)之間的整數 $a$。接著,他們將該格子的數值設為 $a$,並標記與所選格子位於同一行的所有格子(包含所選格子本身)。

網格的「不對稱度」(asymmetry)定義為所有對應格子對在水平鏡像翻轉後的數值絕對差之總和。更正式地說,其定義為:

$$\sum_{1 \le i \le N} \left( \sum_{1 \le j \le M/2} |g_{i,j} - g_{i,M-j+1}| \right)$$

其中 $g_{i,j}$ 是從上往下數第 $i$ 列、從左往右數第 $j$ 行的格子數值。例如,以下的 $2 \times 4$ 網格的不對稱度為 $|8-0| + |4-2| + |6-6| + |7-9| = 12$。

Alice 希望在遊戲結束時最小化網格的不對稱度,而 Bob 希望最大化它。若兩位玩家皆採取最佳策略,最終網格的不對稱度為何?

輸入格式

第一行包含三個以空格分隔的整數 $N$、$M$ 和 $K$ ($1 \le N, M \le 2000$,$M$ 為偶數,$1 \le K \le 10^9$)。

接下來的 $N$ 行,每行包含 $M$ 個整數,其中第 $i$ 行包含整數 $g_{i,1}, \dots, g_{i,M}$ ($0 \le g_{i,j} \le K$),代表從上往下數第 $i$ 列中,由左至右的格子數值。

下表顯示了 25 分的配分方式:

得分 $N$ 的範圍 $M$ 的範圍 $K$ 的範圍
2 分 $N = 1$ $2 \le M \le 2000$ $1 \le K \le 10^9$
3 分 $1 \le N \le 2000$ $M = 2$ $K = 1$
3 分 $1 \le N \le 2000$ $M = 2$ $1 \le K \le 10$
3 分 $1 \le N \le 2000$ $M = 2$ $1 \le K \le 10^9$
4 分 $1 \le N \le 2000$ $2 \le M \le 2000$ $K = 1$
4 分 $1 \le N \le 2000$ $2 \le M \le 2000$ $1 \le K \le 10$
6 分 $1 \le N \le 2000$ $2 \le M \le 2000$ $1 \le K \le 10^9$

輸出格式

輸出一個整數,代表 Alice 和 Bob 皆採取最佳策略時,最終網格的不對稱度。

範例

範例輸入 1

3 2 1
1 0
1 0
0 0

範例輸出 1

2

說明 1

只有 2 行,因此每位玩家各進行 1 次移動。由於 Alice 先手,她可以執行以下移動:

  • 選擇第一行中數值為 1 的其中一個格子並將其設為 0。接著 Bob 的最佳移動是將第二行中同一列的格子數值設為 1。最終網格將與原始網格相同,僅有前兩行中的 0 和 1 發生交換。此類網格的不對稱度為 $|1-0| + |0-1| + |0-0| = 2$。
  • 選擇第二行中前兩列的其中一個格子並將其設為 1。接著 Bob 的最佳移動是將第一行中同一列的格子數值設為 0。同樣地,最終網格將與原始網格相同,僅有前兩行中的 0 和 1 發生交換。此類網格的不對稱度為 2。
  • 選擇第三行中的其中一個格子並將其設為 1。接著 Bob 的最佳移動可以是將第三行中的另一個格子設為 0。注意,所選格子原本的數值已為 0,且此類移動是被允許的。最終,網格的每一行都將有一個 0 和一個 1,導致不對稱度為 3。
  • 選擇任何格子並將其設為當前數值。接著 Bob 的最佳移動是將剩餘未標記行中的第三行格子設為 1。最終,網格的每一行都將有一個 0 和一個 1,導致不對稱度為 3。

我們可以看到,無論 Alice 如何移動,Bob 都能以某種方式遊玩,使得不對稱度至少為 2。如果 Alice 選擇最佳的第一步,她可以確保 Bob 無法使最終的不對稱度超過 2。因此,若兩位玩家皆採取最佳策略,不對稱度為 2。

範例輸入 2

1 10 21
4 2 0 6 7 6 9 9 10 21

範例輸出 2

55

說明 2

只有單一列,因此對於每次移動,當前玩家將選擇一個未標記的格子並將其設為 0 到 21 之間的任意數值。遊戲在每位玩家各進行 5 次移動後結束,導致所有 10 個格子皆被標記。

範例輸入 3

4 6 986754321
219759391 882760615 762656191 423465948 621463211 136889371
215621504 385106915 740086459 417915224 551800597 572994766
176308756 365311996 635683450 907755406 590000050 586083433
607011121 457147795 837558908 684766852 946836347 303039615

範例輸出 3

3972378656

說明 3

注意答案可能無法放入 32 位元整數中。

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.