D. Ticket Game (juego de pensamiento + bash)

https://codeforces.com/problemset/problem/1215/D


Ideas:

Si tomas una piedra, toma 1, 2, .... Siempre hay conclusiones. Similar aquí.

La primera es si los dos lados? ¿Llegarás a un lado antes del final? También hay una diferencia entre los dos lados.

En este punto, el problema se convierte en un montón de piedras para ti, cada vez que puedes tomar 1, 2, ... 9. Quién gana primero y segundo. Solo mire% 9.

También hay una pequeña restricción aquí: todos deben tomar la cantidad restante / 2 veces.

Piénselo de esta manera, es decir, independientemente de que A tome x, lo que B puede garantizar es tomar y como 9-x, es decir, solo puede garantizar que sea un múltiplo de 9. Un total de n / 2 veces, es decir, n / 2 * 9 == suma, B gana. De lo contrario, A gana

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=2e5+1000;
typedef long long LL;
char a[maxn],b[maxn],s[maxn];
LL tot1=0,tot2=0;
inline LL read(){LL x=0,f=1;char ch=getchar();	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
int main(void)
{
  LL n;cin>>n;
  scanf("%s",s+1);
  for(LL i=1;i<=n/2;i++) a[++tot1]=s[i];
  for(LL i=n/2+1;i<=n;i++) b[++tot2]=s[i];

  LL sum1=0;LL qnum1=0;
  for(LL i=1;i<=tot1;i++){
    if(a[i]=='?') qnum1++;
    if(a[i]>='0'&&a[i]<='9') sum1+=(a[i]-'0');
  }
  LL sum2=0;LL qnum2=0;
  for(LL i=1;i<=tot2;i++){
    if(b[i]=='?') qnum2++;
    if(b[i]>='0'&&b[i]<='9') sum2+=(b[i]-'0');
  }
  LL numcnt=sum1-sum2;
  if(numcnt==0){
    if(qnum1==qnum2) cout<<"Bicarp"<<"\n";
    else cout<<"Monocarp"<<"\n";
  }
  else{
    if(numcnt>0){
        LL res=(qnum2-qnum1)/2;
        if(res*9==numcnt) cout<<"Bicarp"<<"\n";
        else cout<<"Monocarp"<<"\n";
    }
    else if(numcnt<0){
        LL res=(qnum1-qnum2)/2;
        if(res*9==abs(numcnt)) cout<<"Bicarp"<<"\n";
        else cout<<"Monocarp"<<"\n";
    }
  }
return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/zstuyyyyccccbbbb/article/details/114949444
Recomendado
Clasificación