题解: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\) 轮派马方案后,可采用一定策略保证胜利:
  1. 用自己编号最小的马消耗田忌编号最大的马;
  2. 用自己编号大的马赢田忌编号小的马。
    此时小 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;
}
posted @ 2026-05-24 13:38  Synthx  阅读(3)  评论(0)    收藏  举报