P1199 [NOIP2010 普及组] 三国游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路 贪心
因为每次你拿当下默契值最大的武将时
计算机一定会将其拆散
所以我们在已知计算机会拆散的情况下
我们先选一个武将 ->计算机拆散 ->又到我们
接下来我们直接拿该武将匹配值中第二大的值 。
只要拿到所有第二大 ,而所有第一大又无法组成 ,所以我们必胜。
而对于胜利 我们直接拿所有第二大中最大的值 ,直接获胜 。
所以读好表后 ,sort排序找出第二大中最大的即可。
#include<iostream>
#include<algorithm>
using namespace std;
int a[500][500];
int main(){
int n;
cin>>n;
int x=2;
for(int i=1;i<=n;i++){
int j=x;
while(j<=n){
cin>>a[i][j];
a[j][i]=a[i][j];
j++;
}
x++;
}
int maxx=0;
for(int i=1;i<=n;i++){
sort(a[i]+1,a[i]+1+n);
maxx=max(maxx,a[i][n-1]);
}
cout<<"1\n"<<maxx<<endl;
return 0;
}