我们可以设武将a,与其默契值最高的武将为a’,那么
我 | 机 |
---|---|
a | a’ |
此时,我们根据贪心策略,便可以选与a组合默契值次大的b,则计算机便会选b’
我 | 机 |
---|---|
a,b | a’, b’ |
此时明显,a与b的默契值 > a’b’的默契值
原因:因为a和b组成的默契值是次大的,而a’与b’不可能是最大的(已经被拆分),而默契值均不相同,所以a与b的默契值 > a’b’的默契值
所以人必赢(先手)
那么只需要遍历每个人找出其次大值的最大值就搞定了。
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 505;
int n, mq[MAXN][MAXN], ans;
int main() {
cin >> n;
for(int i=1; i<=n; i++) {
for(int j=i+1; j<=n; j++) {
cin >> mq[i][j];
mq[j][i] = mq[i][j];
}
}
for(int i=1; i<=n; i++) {
sort(mq[i]+1, mq[i]+1+n, greater<int>());
ans = max(ans, mq[i][2]);
}
cout << 1 << endl << ans << endl;
return 0;
}