洛谷 P1199 [NOIP 2010 普及组] 三国游戏 题解
洛谷 P1199 [NOIP 2010 普及组] 三国游戏 题解
题目链接
思路分析
首先,由题意不论小涵选什么武将,计算机都会选与小涵这个武将默契度最高的武将,那么小涵最高只能选到这个武将与其他武将默契度的次大值;若小涵另外乱选一个,则计算机会自动选择某一武将使得其满足小涵选择该武将后对其最优。总之,计算机会自动选择当前的小涵的最优选择,故小涵始终只能选择次优解。
因此,我们只需考虑每一武将与其他武将的默契度的次大值即可,因为最大值肯定会被计算机选走或者不如另一个次大值,然后找出最大的即可。时间复杂度 \(\mathcal O(n^2)\)。
代码呈现
#include<bits/stdc++.h>
using namespace std;
const int N=505;
int n;
int a[N][N];
int main(){
scanf("%d",&n);
for (int i=1;i<n;++i){
for (int j=i+1;j<=n;++j) scanf("%d",a[i]+j),a[j][i]=a[i][j];
}
int s=0;
for (int i=1;i<=n;++i){
sort(a[i]+1,a[i]+n+1,greater<int>());
s=max(s,a[i][2]);
}
printf("1\n%d",s);
return 0;
}

浙公网安备 33010602011771号