题解:B4379 [蓝桥杯青少年组省赛 2025] 硬币游戏

题解:B4379 [蓝桥杯青少年组省赛 2025] 硬币游戏

思路解析:

这道题是一道简单的博弈论,我们可以分类讨论。

  1. \(n\) 是一个偶数,如果第一个出现的最小值在奇数位,双方只要都一个一个拿,Jerry 必定先拿完自己筐里的硬币,所以 Tom 赢,否则,如果第一个出现的最小值在偶数位,Tom 必定先拿完自己筐里的硬币,所以 Jerry 赢。
  2. \(n\) 是一个奇数,Jerry 必赢,因为第一轮 Jerry 只要拿走第一个筐里的所有硬币,第二轮 Tom 必败。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int a[1000010];
int main() {
    int t,n;
    cin>>t;
    while(t--) {
        cin>>n;
        int mi=2147483647,z;
        for(int i=1;i<=n;i++) {
            cin>>a[i];
            mi=min(mi,a[i]);
        }
        for(int i=1;i<=n;i++) {
            if(a[i]==mi) {
                z=i;
                break;
            }
        }
        if(n%2==0) {
            if(z%2==0) {
                cout<<"Jerry\n";
            }
            else {
                cout<<"Tom\n";
            }
        }
        else {
            cout<<"Jerry\n";
        }
    }
    return 0;
}

希望大家都能 AC 这道题。

posted @ 2026-01-11 21:43  Mirror_victor  阅读(0)  评论(0)    收藏  举报