传送门

博弈,发现情况有点多,分析一下把有用的状态提取出来

显然各个位置的数字是没用的,我们只要知道两边的数字和分别是多少

并且状态显然和左右两边的 "?" 数量有关

因为最终我们只在意左右是否相等,即差值是否为 $0$

所以两边的数字和分别是多少也不必要,我们只要知道两边数字的差即可

再分析一下,对于当前某种两边都有 "?" 的情况,先手走了对他最优的决策,使数字差往对他有利的方向发展

后手显然可以在另一边做同样的决策,使得数字差又变回来,即后手可以抵消先手的决策

所以两边的 "?" 可以互相抵消,我们只要考虑剩下一边有 "?" 的情况

如果此时 "?" 数量刚好为 $0$,直接根据差值即可判断胜负

否则

此时如果 "?" 数量除以 $2$ ,即先手可以填的位置数量,乘以 $9$ 即先手全填 $9$ 得到的值大于另一边,那么最终差值不可能相等,先手全填 $9$ 即可保证胜利

或者如果 "?" 数量除以 $2$ ,即后手可以填的位置数量,乘以 $9$ 即后手全填 $9$ 得到的值小于另一边,那么最终差值不可能相等,先手全填 $0$ 即可稳赢

只有当 "?" 数量除以 $2$ 乘以 $9$ 以后值刚好等于另一边,那么后手稳赢,因为后手只要填 $9-先手填的数值$ 即可

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=4e5+;
int n;
char s[N];
int main()
{
n=read(); scanf("%s",s+);
int tl=,tr=,cntl=,cntr=;
for(int i=;i<=n/;i++)
{
if(s[i]!='?') tl+=s[i]-'';
else cntl++;
}
for(int i=n/+;i<=n;i++)
{
if(s[i]!='?') tr+=s[i]-'';
else cntr++;
}
if(cntl<cntr) swap(cntl,cntr),swap(tl,tr);
int cnt=cntl-cntr,t=tl-tr;
if(!cnt&&!t) { printf("Bicarp\n"); return ; }
if(!cnt&&t) { printf("Monocarp\n"); return ; }
if(t>=) { printf("Monocarp\n"); return ; }
if(cnt/*>-t) { printf("Monocarp\n"); return ; }
if(cnt/*<-t) { printf("Monocarp\n"); return ; }
printf("Bicarp\n");
return ;
}

Codeforces 1215D. Ticket Game的更多相关文章

  1. Codeforces 1215D Ticket Game 题解

    Codeforces 1215D Ticket Game 原题 题目 Monocarp and Bicarp live in Berland, where every bus ticket consi ...

  2. Ticket Game CodeForces - 1215D 博弈题

    题目描述 Monocarp and Bicarp live in Berland, where every bus ticket consists of n digits (n is an even ...

  3. 【博弈论】CF 1215D Ticket Game

    题目大意 洛谷链接 给出一个长度为\(n\)的由数字组成的字符串(\(n\)是偶数).但可能有偶数个位上的数字为?. 现在有两个人\(A\)和\(B\),在?的位置上填\(0\)~\(9\)的数,一直 ...

  4. CodeForces 146A Lucky Ticket

    Lucky Ticket Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submi ...

  5. Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Round 1) C. Vasya and Golden Ticket 【。。。】

    任意门:http://codeforces.com/contest/1058/problem/C C. Vasya and Golden Ticket time limit per test 1 se ...

  6. Codeforces Round #585 (Div. 2) D. Ticket Game

    链接: https://codeforces.com/contest/1215/problem/D 题意: Monocarp and Bicarp live in Berland, where eve ...

  7. Codeforces 938 D. Buy a Ticket (dijkstra 求多元最短路)

    题目链接:Buy a Ticket 题意: 给出n个点m条边,每个点每条边都有各自的权值,对于每个点i,求一个任意j,使得2×d[i][j] + a[j]最小. 题解: 这题其实就是要我们求任意两点的 ...

  8. Codeforces 938.D Buy a Ticket

    D. Buy a Ticket time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  9. Codeforces 938D Buy a Ticket (转化建图 + 最短路)

    题目链接  Buy a Ticket 题意   给定一个无向图.对于每个$i$ $\in$ $[1, n]$, 求$min\left\{2d(i,j) + a_{j}\right\}$ 建立超级源点$ ...

随机推荐

  1. CodeForces - 28C Bath Queue 概率与期望

    我概率期望真是垃圾--,这题搞了两个钟头-- 题意 有\(n\)个人,\(m\)个浴室,每个浴室里有\(a_i\)个浴缸.每个人会等概率随机选择一个浴室,然后每个浴室中尽量平分到每个浴缸.问期望最长排 ...

  2. Unity3D_(物理引擎)Rigidbody组件

    Rigidbody组件刚体(Rigidbody)是Unity物理引擎中的重要组件,一个游戏对象添加了刚体组件以后就开始接受物理力学的影响了,比如重力.空气摩擦力.碰撞产生的推力   Learn 相同高 ...

  3. 为什么要使用 Go 语言,Go 语言的优势在哪里?

    1.Go有什么优势 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了. 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的 ...

  4. python3笔记二十三:正则表达式之其他函数

    一:学习内容 re.split函数 re.finditer函数 re.sub函数 group()分组 re.compile函数 二:字符串切割---re.split函数 需要导入包:import re ...

  5. datagrid数据清空

    方法一: 不管是url方式还是加载本地数据的方式,均可以直接使用loadData方法清空数据,一行代码就可以清空: $('#tt').datagrid('loadData',{total:0,rows ...

  6. P5436 【XR-2】缘分

    P5436 [XR-2]缘分 题解 很显然给出一个n,要想使缘分最大,一定要选 n 和 n-1 对吧 但是这里有一个特盘,当 n=1 时,缘分应该为1 而不是0 代码 #include<bits ...

  7. Git - p4merge

    Windows 下配置 先确保 p4merge 的路径(默认:C:\Program Files\Perforce\)在环境变量中 C:\Users\zjffu>where p4merge C:\ ...

  8. unity3d卡在loading的解决方法

    解决方案: 关闭U3D,打开电脑的网络适配器把网给掐掉,打开U3D后会提示Workoffline 点击这个即可,然后再把网给起起来就可以了

  9. Python_元组、字典内建方法详解

    目录 目录 前言 软件环境 元组Tuple count 查询一个元素在Tuple中的数量 index 查询元素在Tuple中的索引号 元组的遍历 字典Dictionary 创建一个字典对象 简单的创建 ...

  10. 阶段3 2.Spring_04.Spring的常用注解_7 改变作用范围以及和生命周期相关的注解

    Scope 改成多例 PreDestory和PostConstruct PreDestory和PostConstruct这两个注解了解即可 增加两个方法,分别用注解 没有执行销毁方法. 如果你一个子类 ...