G. Imyourfan

  • 赛场上坚信如此通过人数,做法不会太难,坚持分类讨论,终于成功通过了这道题目
点击查看代码
#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;
}
posted @ 2025-01-20 18:06  D06  阅读(13)  评论(0)    收藏  举报
//雪花飘落效果