其他分享
首页 > 其他分享> > Codeforce---C--penalty

Codeforce---C--penalty

作者:互联网

题目如下: 

 

 

 分析:很关键的一句话就是:裁判是不知道预测结果的,所以,对于裁判的评测,必须要压倒性获胜才能结束对局。

接下来,讲解一下我的思路,首先,在没有问号的情况下,是很好判断对局的,那么,问号该怎么处理呢?,我先用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;
 } 

 

标签:break,aq1,aq2,--,---,int,second,Codeforce,first
来源: https://blog.csdn.net/qq_52048593/article/details/121061210