官方题解
2025-09-08 11:22:22
发布于:浙江
5阅读
0回复
0点赞
题目大意
有 个数,小午只能隐藏奇数位置的数,小枫只能隐藏偶数位置的数,两人轮流行动,小午先手,若最后剩下一个数时结束,剩下的数如果是奇数,小午获胜,否则小枫获胜。求最终谁一定会赢。
解题思路
因为每个人可以选择隐藏的数和对方没有交集,所以在隐藏数时,小午会优先选择隐藏偶数,小枫会优先先择隐藏奇数。
当 为奇数时,判断奇数位置是否有奇数,有则输出 Noon
,否则输出 Maple
; 为偶数时,判断偶数位置是否有偶数,有则输出 Maple
;否则输出 Noon
。
参考代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
signed main(){
int n;cin>>n;
vector<int>a(n+1);
for(int i=1;i<=n;i++) cin>>a[i];
bool odd=0,eve=0;
for(int i=1;i<=n;i+=2){
if(a[i]&1) odd=true;
}
for(int i=2;i<=n;i+=2){
if((a[i]&1)==0) eve=true;
}
if(n&1){
if(odd) cout<<"Noon"<<endl;
else cout<<"Maple"<<endl;
}
else{
if(eve) cout<<"Maple"<<endl;
else cout<<"Noon"<<endl;
}
}
这里空空如也
有帮助,赞一个