貪心 洛谷 P1199 三國遊戲 題解

2022-04-28 17:33:12 字數 3288 閱讀 5959

這個題儘管題目長,主要還是證明貪心的正確性(與博弈關係不大)

小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做《三國》的遊戲。

在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有$n$位武將($n$為偶數且不小於4),任意兩個武將之間有乙個「默契值」,表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的(稱為自由武將,一旦某個自由武將被選中作為某方軍隊的一員,那麼他就不再是自由武將了),換句話說,所謂的自由武將不屬於任何一方。

遊戲開始,小涵和計算機要從自由武將中挑選武將組成自己的軍隊,規則如下:小涵先從自由武將中選出乙個加入自己的軍隊,然後計算機也從自由武將中選出乙個加入計算機方的軍隊。接下來一直按照「小涵→計算機→小涵→……」的順序選擇武將,直到所有的武將被雙方均分完。然後,程式自動從雙方軍隊中各挑出一對默契值最高的武將組合代表自己的軍隊進行二對二比武,擁有更高默契值的一對武將組合獲勝,表示兩軍交戰,擁有獲勝武將組合的一方獲勝。

已知計算機一方選擇武將的原則是盡量破壞對手下一步將形成的最強組合,它採取的具體策略如下:任何時刻,輪到計算機挑選時,它會嘗試將對手軍隊中的每個武將與當前每個自由武將進行一一配對,找出所有配對中默契值最高的那對武將組合,並將該組合中的自由武將選入自己的軍隊。 下面舉例說明計算機的選將策略,例如,遊戲中一共有6個武將,他們相互之間的默契值如下表所示:

雙方選將過程如下所示:

小涵想知道,如果計算機在一局遊戲中始終堅持上面這個策略,那麼自己有沒有可能必勝?如果有,在所有可能的勝利結局中,自己那對用於比武的武將組合的默契值最大是多少?

假設整個遊戲過程中,對戰雙方任何時候均能看到自由武將隊中的武將和對方軍隊的武將。為了簡化問題,保證對於不同的武將組合,其默契值均不相同。

輸入格式:

共$n$行。

第一行為乙個偶數$n$,表示武將的個數。

第2行到第$n$行裡,第$i+1$行有$n_i$個非負整數,每兩個數之間用乙個空格隔開,表示$i$號武將和$i+1,i+1,\cdots ,n$號武將之間的默契值($0\le$默契值$\le 1,000,000,000$)。

輸出格式:

共1或2行。

若對於給定的遊戲輸入,存在可以讓小涵獲勝的選將順序,則輸出1,並另起一行輸出所有獲勝的情況中,小涵最終選出的武將組合的最大默契值。如果不存在可以讓小涵獲勝的選將順序,則輸出0。

輸入樣例#1:

6 

5 28 16 29 27

23 3 20 1

8 32 26

33 11

12

輸出樣例#1:

1

32

輸入樣例#2:

8 

42 24 10 29 27 12 58

31 8 16 26 80 6

25 3 36 11 5

33 20 17 13

15 77 9

4 50

19

輸出樣例#2:

1

77

【資料範圍】

對於$40\%$的資料有$n\le 10$。

對於$70\%$的資料有$n\le 18$。

對於$100\%$的資料有$n\le 500$。

首先注意到,在這個題裡,計算機是貪心的,也就是說,無論人選什麼,它都會盡可能去選與人默契值最大的。想到這裡可能會聯想到博弈論,因為兩個人的目標都是一樣的。不過稍加分析會發現,人總是拿不到最優的。

因為我們選將可以看作乙個配對的過程,所以在選將$i$後,第$i$行和第$i$列**中行和列都是我們的,在自己的行和自己的列交點處就是自己的武將對了。也就是說**是對稱的。

分析樣例可以得知,最優解總是每一行(整理後)排名第二大中最大的那個。也就是說,每一行的最大的那一組電腦是不可能讓你選到手的。一旦選擇了最大的一組中的其中乙個,電腦總可以先手把另一半搶掉,所以每行最大的一組是不可能選出的。而我們要證明次大中最大的那個是一定可以選到的。

當我們選擇了次大中最大的那一行,電腦就毫無疑問會把那一行中最大的乙個給選出來。

此時我們把次大中最大的另一半給配上就可以了。那我們現在拿到了人所可能拿到的最大的一對武將,怎麼保證計算機不拿到比自己更大的武將呢?可以看出,比當前已有的默契值更大的武將一定在其他行中處於最大的位置,(假設計算機足夠聰明)如果計算機去選了那個位置,人先手去把它搶掉就行了。而計算機並沒有那麼聰明,它只會避免你去選能選的最大的武將,此時可以分情況討論。

計算機此時選擇乙個武將有兩種影響:一是與原來的綠線相交,如果與綠線相交會直接確定一組武將,此時人是阻止不了的。但是我們可以保證現在一條線與綠線的交點值一定小於人的答案。反證:如果那個值比人的答案(五角星)要大而比三角形要小,那麼次大中最大的就是這個值,因此這個值不可能在這個範圍;而如果那個人的值比三角形還大,那次大中最大的就是三角形了。因此與綠線的交點絕不會超過五角星。

第二種影響就是不與綠線相交。對於不與綠線相交的部分,只要人去把計算機最大的搶掉,計算機就不可能搶到每一行中最大的那個。

綜上所述,無論人還是計算機都無法搶到每一行中最大的那個,而根據貪心,人去選每行次大元素中最大的一定能選到,此時也能阻止計算機去選更大的元素。同時人不會輸。

#include#includeusing std::sort;

int a[510][510];

int main()

printf("1\n%d\n",ans);//一定有解

return 0;

}

洛谷 P1199 三國遊戲

題目描述 小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武...

洛谷P1199 三國遊戲

小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武將,一旦某...

洛谷 P1199 三國遊戲

參考 solution id 17 這道題要求最後得到的兩方的默契值最大的武將,小涵的默契值大於計算機,首先,我們這個解法獲勝的思路是,每個武將對應的所有配對值中最大的值,已經被拆散 在這種情況下,場上存在的只剩所有的 次大值 就是我們拿來排序的那一堆 這時候小涵拿到了 次大值 中的最大值,肯定是場...