Ticket Game(CF)


题目大意:
一个数列(保证是个数是偶数),前一半之和 与 后一半之和 如果相等 就称这个数列为开心数列
但是数列有些数字被擦掉了为'?' 现在M和B两人玩游戏 M先手,每一轮将'?'填0到9的数字
最终数列如果为开心则B胜利 如果不开心则M胜利 M和B都很聪明 给出数列求最终胜利者

分析
ans1表示前一半数字之和 ans2表示后一半的数字和

num1表示前一半'?'之和 num1表示后一半'?'数字和

分情况

num1=num2:
如果sum1=sum2 那么M先手后B只要保证和M在另一边选和A一样的数就能使得数列为开心 B必胜

         如果sum1!=sum2 和上述相等的情况一样 M一直在一边填9,B只有跟着在另一边填9,但是初始值不同 数列一定是不开心的

num1>num2:
设两边"?"的差值cha=num1-num2

        先不管怎么样 只要M是最后一个设置数字的 那他一定是能让数列不开心的 

        所以当cha为奇数的时候 M必胜
        
        当cha为偶数的时候 B为最后一手
     
        如果ans1>=ans2 M只要保证每次在前半部分填上9 前后数字和的差值只会增大不会减小  这样B最后一手怎么都填不上使之相等

        如果ans1<ans2  如果B在前部分一直填9也没能让ans1>ans2那肯定最后数列一定不开心

                       如果M在前部分一直填9可以让ans1>ans2 那肯定最后数列也一定不开心

num1<num2的情况类似

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int maxn=2e5+5;
int n,prenum,endnum,presum,endsum;
char s[maxn];
int main(){
	cin>>n;getchar();
	for(int i=1;i<=n;i++)s[i]=getchar();
	for(int i=1;i<=n/2;i++){
		 if(s[i]=='?')
		 presum++;
		 else prenum+=s[i]-'0';
	}
	for(int i=n/2+1;i<=n;i++){
		if(s[i]=='?')
		endsum++;
		else endnum+=s[i]-'0';
    }
    if(presum==endsum){
    	if(prenum!=endnum)
    		cout<<"Monocarp"<<endl; 
		else cout<<"Bicarp"<<endl;
	}
	else {
		if(presum<endsum){
			int cha=endsum-presum;
			if(cha&1)
			cout<<"Monocarp"<<endl;
			else {
			if(endnum>=prenum)
			cout<<"Monocarp"<<endl;
			else{
				if(endnum+(cha/2)*9<prenum||endnum+(cha/2)*9>prenum)
				cout<<"Monocarp"<<endl;
				else cout<<"Bicarp"<<endl;
			}
			}
		}
		else {
			int cha=presum-endsum;
			if(cha&1)
			cout<<"Monocarp"<<endl;
			else {
			if(endnum<=prenum)
			cout<<"Monocarp"<<endl;
			else{
				if(endnum<prenum+(cha/2)*9||endnum>prenum+(cha/2)*9)
				cout<<"Monocarp"<<endl;
				else cout<<"Bicarp"<<endl;
			}
			}
		}
	}
     return 0;
}
posted @   wzx_believer  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示