參考:solution_id:17
這道題要求最後得到的兩方的默契值最大的武將,
小涵的默契值大於計算機,
首先,我們這個解法獲勝的思路是,每個武將對應的所有配對值中最大的值,已經被拆散
在這種情況下,場上存在的只剩所有的「次大值」,就是我們拿來排序的那一堆
這時候小涵拿到了「次大值」中的最大值,肯定是場上最高的分數
策略就是:
先考慮最開始的情況:
1.從武將中找出武將i,記下與i的默契值第二大的武將j,使得i與j的默契值最大
2.小涵選出i,那麼計算機只會選出與i默契值最大的武將p
此時與p的默契值最大值一定是i。為什麼呢?
假設與p的默契值最大值是k,次大值是k2,第某大的值是i
那麼p-k > p-k2 > p-i
這裡的'-'是對應的意思
而i-p > i-j
所以p-k2 > i-j
也就是與p默契值第二大的值大於與i默契值第二大的值
顯然小涵開始時應該改選p,矛盾。
因此,我們第一次選了i,取得了次大值中的最大值,同時拆掉了i的最大值和p的最大值
3.小涵選出l(i的默契值次大值),計算機選m,m是:i,或,l除了與i外,的最大值
可能有兩種原因:一是l-m是l除了與i外的最大值,拆了最大值正合我意
二是i-m比l除了與i外的最大值更大(但是不會比i-l大,
因為i的最大值已經拆掉了,次大值就是i-l),即i-l > i-m > (l除了與i外的最大值)
這時候l的最大值拆不拆都是無所謂的,反正小於我們的i-l
然後小涵選了n拆了m的最大值m-n
計算機接著拆最大值,要麼是n的最大值,要麼比i-l小,證法同上
兩個人就這麼拆最大值,就把最大值拆完了,剩下的就是次大值,我們的i-l就是次大值中最大的
所以還是不要想著證明了,程式設計拿搜尋對拍驗證吧,
找了幾十個證明也沒看到嚴謹的,實在是難想。。。
1 #include2 #include3intn;
4int a[510][510];5
intmain()617
}18 a[n][n]=-1;19
for(i=1;i<=n;i++)
20 std::sort(a[i]+1,a[i]+n+1
);21
for(i=1;i<=n;i++)
22if(a[i][n-1]>maxans)
23 maxans=a[i][n-1
];24 printf("
1\n%d\n
",maxans);
25return0;
26 }
洛谷 P1199 三國遊戲
題目描述 小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武...
洛谷P1199 三國遊戲
小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武將,一旦某...
P1199 三國遊戲
小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武將,一旦某...
P1199三國遊戲
眾所周知,三國題材的遊戲很多,小涵遇到了其中之一 傳送這個題顯然用貪心做,但是怎麼貪心?首先我們只知道計算機的策略,但我們不知道小涵的策略。所以我們要想小涵是怎麼挑的。計算機的策略是拆掉你每次選擇時最大的那一對,所以小涵當前能夠得到的最大默契值就是小涵所選武將那一行的次大值。為了得到這個次大值,下一...
P1199 三國遊戲
小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武將,一旦某...