PROBLEM
https://www.luogu.org/problemnew/show/P1199
ANALYSIS
题意就不描述了。
此题中,人是必胜的,只需要做到 每次取所有行中第二大元素最大的那个行。
证明:
- 计算机和人都永远都拿不到第一大的元素。
- 计算机永远都拿不到第二大的元素,但是人可以。
SOLUTION
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
constexpr int N = 550;
int d[N][N], n;
bool v[N];
void go(int n) {
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
scanf("%d", d[i] + j);
d[j][i] = d[i][j];
}
}
int u = 0, v, z = 0;
for (int i = 1; i <= n; i++) {
u = 0;
for (int j = 1; j <= n; j++) {
if (u < d[i][j]) {
v = u;
u = d[i][j];
}else if(v<d[i][j]){
v = d[i][j];
}
}
z = max(v, z);
}
cout << 1 << endl;
cout << z << endl;
return 0;
}
REFERENCE
这篇题解写的太好了
本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.