小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做《三國》的遊戲。
在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將(n為偶數且不小於 4),任意兩個武將之間有乙個「默契值」,表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的(稱為自由武將,一旦某個自由武將被選中作為某方軍隊的一員,那麼他就不再是自由武將了),換句話說,所謂的自由武將不屬於任何一方。
遊戲開始,小涵和計算機要從自由武將中挑選武將組成自己的軍隊,規則如下:小涵先從自由武將中選出乙個加入自己的軍隊,然後計算機也從自由武將中選出乙個加入計算機方的軍隊。接下來一直按照「小涵→計算機→小涵→……」的順序選擇武將,直到所有的武將被雙方均分完。然後,程式自動從雙方軍隊中各挑出一對默契值最高
的武將組合代表自己的軍隊進行二對二比武,擁有更高默契值的一對武將組合獲勝,表示兩軍交戰,擁有獲勝武將組合的一方獲勝。
已知計算機一方選擇武將的原則是盡量破壞對手下一步將形成的最強組合,它採取的具體策略如下:任何時刻,輪到計算機挑選時,它會嘗試將對手軍隊中的每個武將與當前每個自由武將進行一一配對,找出所有配對中默契值最高的那對武將組合,並將該組合中的自由武將選入自己的軍隊。 下面舉例說明計算機的選將策略,例如,遊戲中一共有 6 個武將,他們相互之間的默契值如下表所示:
雙方選將過程如下所示:
小涵想知道,如果計算機在一局遊戲中始終堅持上面這個策略,那麼自己有沒有可能必
勝?如果有,在所有可能的勝利結局中,自己那對用於比武的武將組合的默契值最大是多
少? 假設整個遊戲過程中,對戰雙方任何時候均能看到自由武將隊中的武將和對方軍隊的武將。為了簡化問題,保證對於不同的武將組合,其默契值均不相同。
輸入格式:
輸入檔名為 sanguo.in,共 n 行。
第一行為乙個偶數 n,表示武將的個數。
第 2 行到第 n 行裡,第(i+1)行有(ni)個非負整數,每兩個數之間用乙個空格隔
開,表示 i 號武將和 i+1,i+2,……,n 號武將之間的默契值(0≤默契值≤1,000,000,000)。
輸出格式:
輸出檔案 sanguo.out 共 1 或 2 行。
若對於給定的遊戲輸入,存在可以讓小涵獲勝的選將順序,則輸出 1,並另起一行輸出
所有獲勝的情況中,小涵最終選出的武將組合的最大默契值。
如果不存在可以讓小涵獲勝的選將順序,則輸出 0。
輸入樣例#1:
6輸出樣例#1:5 28 16 29 27
23 3 20 1
8 32 26
33 11
12
1輸入樣例#2:32
8輸出樣例#2: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
1【資料範圍】77
對於 40%的資料有 n≤10。
對於 70%的資料有 n≤18。
對於 100%的資料有 n≤500。
計算機一定會破壞小涵所選武將的最大默契值
對於小涵選取乙個武將 a[i] 計算機一定會選取max(a[i],a[j])
那小涵就選取second_max(a[i],a[k]) 顯然更優 這是可以拿到的最大默契值
下面計算機有兩個選擇 可以選擇 (a[i],a[l]) 但是顯然要比max和second_max小
還可以選擇max(a[k],a[z]) 這樣的話 小涵選擇 second-max(a[k],a[z]) 更優
可見小涵一定會勝
那樣小涵選擇的就是所有組合第二大的默契值中最大那個乙個值
1 #include 2 #include 3 #include 4**5 using namespace std;
6 7 const int maxn=510;
8 9 int n;
10 11 int map[maxn][maxn],ans[maxn];
12 13 inline void read(int&x)
19 20 int hh()
28 sort(ans+1,ans+n+1);
29 printf("1\n");
30 printf("%d\n",ans[n]);
31 return 0;
32 }
33 34 int sb=hh();
35 int main()
P1199三國遊戲
眾所周知,三國題材的遊戲很多,小涵遇到了其中之一 傳送這個題顯然用貪心做,但是怎麼貪心?首先我們只知道計算機的策略,但我們不知道小涵的策略。所以我們要想小涵是怎麼挑的。計算機的策略是拆掉你每次選擇時最大的那一對,所以小涵當前能夠得到的最大默契值就是小涵所選武將那一行的次大值。為了得到這個次大值,下一...
P1199 三國遊戲
小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武將,一旦某...
P1199 三國遊戲 博弈
小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 nn 位武將 nn為偶數且不小於44 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武將,一...