NC206656. 赌上信仰的博弈!
描述
输入描述
第一行一个正整数T()。接下来T组数据,对于每组数据:- 第一行,输入一个正整数n ()。- 第二行,输入n个正整数 (),数据保证。数据保证。
输出描述
一行输出,若Mike取胜,则输出"Mike";反之,则输出"Bob"。
示例1
输入:
2 2 1 1 2 2 2
输出:
Bob Mike
C++14(g++5.4) 解法, 执行用时: 225ms, 内存消耗: 888K, 提交时间: 2020-05-24 16:21:00
#include<iostream> #include<cstdlib> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<stack> #define LL long long using namespace std; LL t; LL n,tot,tt,drs; LL x; LL ans[3]; int read() { int _=0,__=1;char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-')__=-1;ch=getchar();} while(ch>='0'&&ch<='9'){_=_*10+ch-'0';ch=getchar();} return _*__; } int main() { std::ios::sync_with_stdio(false); cin>>t; while(t--) { cin>>n;tot=0;tt=0; for(int i=1;i<=n;i++) { cin>>x; ans[i%2]+=x; tot+=x; } tot/=2; tot%=2; drs=n%2; if(tot==1) cout<<"Bob"<<endl; else { if(drs==0) tt=ans[1]%2; else tt=ans[0]%2; if(tt==1) cout<<"Bob"<<endl; else cout<<"Mike"<<endl; } memset(ans,0,sizeof(ans)); } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 334ms, 内存消耗: 996K, 提交时间: 2020-05-24 16:35:48
#include<iostream> using namespace std; long long t,n,a[2100000],ant,ans; int main(){ cin>>t; while(t--){ ant=0,ans=0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; ant+=1LL*a[i]*(n-i); ans+=1LL*a[i]; } ans=ans/2; if((ant%2==0)&&(ans%2==0)){ cout<<"Mike"<<endl; }else{ cout<<"Bob"<<endl; } } }