题目如下:
分析:很关键的一句话就是:裁判是不知道预测结果的,所以,对于裁判的评测,必须要压倒性获胜才能结束对局。
接下来,讲解一下我的思路,首先,在没有问号的情况下,是很好判断对局的,那么,问号该怎么处理呢?,我先用pair分开储存1与?,接下来就是最关键的,假设当前局结束,一定说明某一方是压倒性胜利的,不妨假设A赢或B赢都判断一次,然后如果A赢,那么把A的问号都置为1,如果B赢,把B的问号都置为1,A的置为0,这样的好处是能使得某方获得压倒性胜利。
#include<iostream>
#include<cmath>
using namespace std;
string s;
int t;
pair<int ,int >aq1,aq2;
int main()
{
int ans,len=10;
cin>>t;
while(t--)
{
int target1=0,target2=0;
ans=0;
aq1.first=0;
aq2.first=0;
aq1.second=0;
aq2.second=0;
cin>>s;
for(int i=1;i<=10;i++)
{
ans++;
if(i%2==0) target2++;
else target1++;
if(s[i-1]=='1')
{
if(i%2==0) aq2.first++;
else aq1.first++;
}
else if(s[i-1]=='?')
{
if(i%2==0) aq2.second++;
else aq1.second++;
}
if(i%2==0){
if((aq1.first+aq1.second-aq2.first)>(5-target2))break;
else if(abs(aq2.second+aq2 .first-aq1.first)>(5-target1)) break;
}
else
{
if((aq1.first+aq1.second-aq2.first)>(5-target2))
{
break;
}
else if((aq2.second+aq2.first-aq1.first)>(5-target1))
{
break;
}
}
}
cout<<ans<<endl;
}
return 0;
}