- 赛场上坚信如此通过人数,做法不会太难,坚持分类讨论,终于成功通过了这道题目
点击查看代码
#include <bits/stdc++.h>
using namespace std;
vector<int>h;
int sum[100005],cnt[5];
int main()
{ios::sync_with_stdio(false);cin.tie(0);int T;cin>>T;while(T--){string s;cin>>s;h.clear();h.push_back(-1);for(int i=0;i<s.size();i++){if(s[i]=='X'){h.push_back(i);}if(i){sum[i]=sum[i-1]+(s[i]=='W');}else{sum[i]=(s[i]=='W');}}h.push_back(s.size());memset(cnt,0,sizeof(cnt));for(int i=0;i<h.size()-1;i++){int p=h[i]+1,q=h[i+1]-1;if(p<=q){if(s[p]=='W'&&s[q]=='W'){if(p==q||sum[q-1]-sum[p]==q-1-p){cnt[3]++;//WWW}else{cnt[1]++;//WMW}}else if(s[p]=='M'&&s[q]=='M'){if(p==q||sum[q-1]-sum[p]==0){cnt[4]++;//MMM}else{cnt[2]++;//MWM}}else{cnt[3]++;cnt[4]++;}}}/*for(int i=1;i<5;i++){cout<<cnt[i]<<" ";}cout<<endl;*///cnt[3]=cnt[3]+cnt[1]*2+cnt[2];//cnt[4]=cnt[4]+cnt[1]+cnt[2]*2;if(cnt[1]+cnt[3]<=cnt[4]||cnt[1]+cnt[3]<cnt[2]+cnt[4])//cnt[1]*2+cnt[2]+cnt[3]<=cnt[1]+cnt[2]+cnt[4] or cnt[1]+cnt[2]+cnt[3]<=cnt[2]+cnt[4]{cout<<"Water"<<endl;}else if(cnt[2]+cnt[4]<cnt[3]||cnt[1]+cnt[3]>cnt[2]+cnt[4]+1)//cnt[1]+cnt[2]*2+cnt[4]<cnt[1]+cnt[2]+cnt[3] or cnt[1]+cnt[2]+cnt[4]<cnt[1]+cnt[3]{cout<<"Menji"<<endl; }else{cout<<"Draw"<<endl;}}return 0;
}