题解:B4379 [蓝桥杯青少年组省赛 2025] 硬币游戏
题解:B4379 [蓝桥杯青少年组省赛 2025] 硬币游戏
思路解析:
这道题是一道简单的博弈论,我们可以分类讨论。
- \(n\) 是一个偶数,如果第一个出现的最小值在奇数位,双方只要都一个一个拿,Jerry 必定先拿完自己筐里的硬币,所以 Tom 赢,否则,如果第一个出现的最小值在偶数位,Tom 必定先拿完自己筐里的硬币,所以 Jerry 赢。
- \(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 这道题。

浙公网安备 33010602011771号