• Ticket Game思维题


    题目链接

    题意:

      给你一个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=0,sumb=0,ha=0,hb=0;
        char js;
        for(int i=1;i<=n/2;i++){
            scanf(" %c",&js);
            if(js=='?')
                ha++;
            else
                suma+=js-'0';
        }
        for(int i=1;i<=n/2;i++){
            scanf(" %c",&js);
            if(js=='?')
                hb++;
            else
                sumb+=js-'0';
        }
        if(ha<hb){
            swap(ha,hb);
            swap(suma,sumb);
        }
        int wh=ha-hb;
        int c=sumb-suma;
        if(c<0)
            printf("Monocarp");
        else if(wh/2*9==c)
            printf("Bicarp");
        else
            printf("Monocarp");
        return 0;
    } 
  • 相关阅读:
    Golang 入门~~基础知识
    Redis命令总结
    CI框架在辅助函数中使用配置文件中的变量
    前后端分离--三层
    前后端分层--两层
    JavaScript中的cookie
    JavaScript的类、对象、原型、继承、引用
    Qt编写自定义控件46-树状导航栏
    Qt编写自定义控件45-柱状标尺控件
    Qt编写自定义控件44-天气仪表盘
  • 原文地址:https://www.cnblogs.com/wish-all-ac/p/12759962.html
Copyright © 2020-2023  润新知