Ticket Game思维题
2024-09-07 17:13:26
题目链接
题意:
给你一个n的序列(n=2*k),由数字和?(偶数个)组成,A和B分别操作(B先操作):把?变成一个任意的0-9的数字,如果最后前n/2和后n/2个数字之和相等,则A胜,否则B胜。
分析:
想一想?的作用,对于A来说就是赶快“平衡”两边,而对于B来说就是赶快让两边平衡不了。那么我们想一想B先操作会怎么办,他会把多的那边的某个?变成9(否则a会占更大优势),次时,A只能“跟风”把另一边的一个?变成9,于是一直这样下去,就还剩一边由?,此时,A和B可变的?的个数就相等了,于是每人变一个,当然,如果此时这边的和已经大了的话,那A就“凉了”,否则就计算一下能不能变成相等的,当然此时B就会判断,如果?个数*9/2就超了,那么B会很高兴的把他要变的数字都变成9,如果个数*9/2都不够,那么就B会很开心的把数字都变成0,可是如果正好是个数*9/2,那么就好了,A只需不管B怎么变就变为9-B变的数就好了,A就获胜了。
还是比较简单的,然后我们要做的就是判断一下就好了,最后就是代码了
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int suma=,sumb=,ha=,hb=;
char js;
for(int i=;i<=n/;i++){
scanf(" %c",&js);
if(js=='?')
ha++;
else
suma+=js-'';
}
for(int i=;i<=n/;i++){
scanf(" %c",&js);
if(js=='?')
hb++;
else
sumb+=js-'';
}
if(ha<hb){
swap(ha,hb);
swap(suma,sumb);
}
int wh=ha-hb;
int c=sumb-suma;
if(c<)
printf("Monocarp");
else if(wh/*==c)
printf("Bicarp");
else
printf("Monocarp");
return ;
}
最新文章
- 慕课网-Java入门第一季-7-5 Java 中带参无返回值方法的使用
- truncate和delete之间有什么区别
- Codeforces Beta Round #13 E. Holes 分块暴力
- “有箭头的视图”,即程序的Storyboard Entry Point。
- Maven命令行创建web项目,并部署到jobss当中(解决No plugin found for prefix &#39;jboss-as&#39; in the current project and in the plugin groups [org.apache.maven.plugins,问题)
- Spark集群搭建步骤
- C++第三天学习
- html学习笔记 - table表格
- NOPI读xls文件写到txt中(NPOI系列二)
- python selenium Chrome模拟手机浏览器(十七)
- Android.mk学习
- loadrunner&#160;脚本优化-参数化之Parameter&#160;List参数取值
- LeetCode题解之Lemonade Change
- Linux电源管理(7)_Wakeup events framework【转】
- [原]关于在Python和C#之间消息传递的问题
- sql2008r2安装失败的解决办法
- SecureCRT使用本地公钥 SSH 免密码登录Linux
- ovs flow 原理及实验
- 集合框架_DAY15
- L3-004 肿瘤诊断 dfs bfs