- 赛场上坚信如此通过人数,做法不会太难,坚持分类讨论,终于成功通过了这道题目
点击查看代码
#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;
}