题解:P15287 「YLLOI-R3-T2」霍元甲
观察样例,注意到答案都是 \(\frac{(n+1)}{2}\),直接输出即可。注意 \(n=1\) 时无解,要特判。
证明
光观察那肯定是不行的,需要证明:
- 若 \(k < \frac{n+1}{2}\),则剩余轮次 \(n-k > \frac{n-1}{2}\)。田忌可在剩余轮次中用编号更大的马覆盖小 Y 的马,使小 Y 获胜场数 \(\le\frac{n-1}{2}\)(不足总场数的一半),小 Y 必败。
- 小 Y 怎么选择策略都有可能输 \(n-k\) 局
- 当 \(k = \frac{n+1}{2}\) 时,小 Y 知道田忌前 \(k\) 轮派马方案后,可采用一定策略保证胜利:
- 用自己编号最小的马消耗田忌编号最大的马;
- 用自己编号大的马赢田忌编号小的马。
此时小 Y 至少赢 \(\frac{n+1}{2}\) 场(超过总场数一半),保证必胜。
- \(n=1\) 时,仅有 1 场比赛,田忌的 1 号马必赢小 Y 的 1 号马,因此输出 \(-1\)。
综上所述,答案显然就是 \(\frac{(n+1)}{2}\) 了。
代码如下:
:::info[code]{open}
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
cin >> n;
if(n == 1){
cout << -1;
return 0;
}
cout << n / 2 + 1;
return 0;
}

浙公网安备 33010602011771号