传送门

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

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

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

因为最终我们只在意左右是否相等,即差值是否为 $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. python3.6+Xadmin2.0系列(一) xadmin下载及安装

    环境配置:win7+python3.6+Django2.1+xadmin2+PyCharm 一.Xadmin下载及安装: 1.下载: 下载地址:https://github.com/sshwsfc/x ...

  2. Codeforces Round #584 - Dasha Code Championship - Elimination Round (rated, open for everyone, Div. 1 + Div. 2) G1. Into Blocks (easy version)

    题目:https://codeforc.es/contest/1209/problem/G1 题意:给你一个序列,要你进行一些操作后把他变成一个好序列,好序列的定义是,两个相同的数中间的数都要与他相同 ...

  3. [pytorch笔记] torch.nn vs torch.nn.functional; model.eval() vs torch.no_grad(); nn.Sequential() vs nn.moduleList

    1. torch.nn与torch.nn.functional之间的区别和联系 https://blog.csdn.net/GZHermit/article/details/78730856 nn和n ...

  4. Zookeeper(四))持久化日志文件

    Zookeeper(四))持久化日志文件 持久化用途 存储两种文件 snapshot:内存快照 log:事务日志,类似MySQL的binlog,存储数据节点的操作日志 问题 序列化的本质其实就是将原数 ...

  5. 第八周学习总结&实验报告六

    实验总结 :类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 : 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异 ...

  6. LeetCode 79. 单词搜索(Word Search)

    题目描述 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母不允许被 ...

  7. 一、基础篇--1.2Java集合-Arraylist 与 LinkedList 区别

     Arraylist 与 LinkedList 区别  结构上的区别 ArrayList底层实现基于动态数组,LinkedList底层实现基于双向链表.  性能上区别 ArrayList查询快,增删慢 ...

  8. java工程打成jar包 - 使用maven assembly插件打包及手动打包

    在java工程打包的过程中遇到过不少问题,现在总结一下.一种是典型的maven工程打包,依赖的jar包全都在pom.xml中指定,这种方式打包很方便:另一种是依赖了本机jar包(不能通过pom.xml ...

  9. Uep必填字段校验

    在开发中常常有必填字段, <span style="color:Red">*</span>服务地址:</td><hy:formfield ...

  10. flutter tabbar创建与显示

    效果图 main.dart import 'package:flutter/material.dart'; import 'pages/index_page.dart'; void main() =& ...