Codeforces 1215D. Ticket Game
博弈,发现情况有点多,分析一下把有用的状态提取出来
显然各个位置的数字是没用的,我们只要知道两边的数字和分别是多少
并且状态显然和左右两边的 "?" 数量有关
因为最终我们只在意左右是否相等,即差值是否为 $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的更多相关文章
- Codeforces 1215D Ticket Game 题解
Codeforces 1215D Ticket Game 原题 题目 Monocarp and Bicarp live in Berland, where every bus ticket consi ...
- Ticket Game CodeForces - 1215D 博弈题
题目描述 Monocarp and Bicarp live in Berland, where every bus ticket consists of n digits (n is an even ...
- 【博弈论】CF 1215D Ticket Game
题目大意 洛谷链接 给出一个长度为\(n\)的由数字组成的字符串(\(n\)是偶数).但可能有偶数个位上的数字为?. 现在有两个人\(A\)和\(B\),在?的位置上填\(0\)~\(9\)的数,一直 ...
- CodeForces 146A Lucky Ticket
Lucky Ticket Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submi ...
- 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 ...
- Codeforces Round #585 (Div. 2) D. Ticket Game
链接: https://codeforces.com/contest/1215/problem/D 题意: Monocarp and Bicarp live in Berland, where eve ...
- Codeforces 938 D. Buy a Ticket (dijkstra 求多元最短路)
题目链接:Buy a Ticket 题意: 给出n个点m条边,每个点每条边都有各自的权值,对于每个点i,求一个任意j,使得2×d[i][j] + a[j]最小. 题解: 这题其实就是要我们求任意两点的 ...
- 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 ...
- Codeforces 938D Buy a Ticket (转化建图 + 最短路)
题目链接 Buy a Ticket 题意 给定一个无向图.对于每个$i$ $\in$ $[1, n]$, 求$min\left\{2d(i,j) + a_{j}\right\}$ 建立超级源点$ ...
随机推荐
- BZOJ 4849 [NEERC2016]Mole Tunnels (模拟费用流)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=4849 题解 其实也是模拟费用流,但是这道题和一般的题目不一样,这道题是在一个完全二叉树上 ...
- BatchNormalization、LayerNormalization、InstanceNorm、GroupNorm、SwitchableNorm总结
https://blog.csdn.net/liuxiao214/article/details/81037416 http://www.dataguru.cn/article-13032-1.htm ...
- 从零开始学习vue(2)
一.vue实例 每个vue应用都是通过Vue构造函数创建的一个新的实例开始的: var vm = new Vue({ //选项对象 }) 在这其中vm(viewModel的简称)通常都表示vue实例的 ...
- LeetCode 79. 单词搜索(Word Search)
题目描述 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母不允许被 ...
- legend3---4、lavarel中session使用注意
legend3---4.lavarel中session使用注意 一.总结 一句话总结: session('key',$value)不是存值,是设置默认值,session(['key'=>$val ...
- axios 的用法解析
axios 的非常好的请求数据方式,利用了 promise 的方式来进行的操作 首先 promise 是非常好的处理 异步请求的方式,且拥有高并发请求的能力 并发请求:出现大量的异步请求后,一起处理 ...
- 一次性生产KEY
keytool -genkey -alias rebuild -keypass rebuild -keyalg RSA -keysize -validity -keystore rebuild.key ...
- 《FS Book》: 如何让圣诞节邮件营销与众不同
临近年末,双旦将至,这无疑是一年中最适合进行营销的时候,各大企业都开始进行促销活动,但与此同时,不要忘了问候你的客户,给他们真切的关怀.国内领先的邮件营销服务商Focussend在其最新一期<F ...
- loadrunner设置Analysis分析时去掉思考时间
在进行对loadrunner进行执行脚本的情况下,那么就需要在脚本中进行添加为思考时间,这样才更符合人为的脚本时间,那么在进行执行压力的过程中,思考时间是需要开启的,完成之后为了便于分析那么就需要把思 ...
- Spring MVC Post请求返回403错误,Get请求却正常,可能是安全框架引起的前端解决办法
原文地址:http://blog.csdn.net/t894690230/article/details/52404105 困惑:很奇怪,明明在方法上面配置了RequestMethod.POST,PO ...