• CF1527 B1. Palindrome Game (easy version)


    https://codeforces.com/contest/1527/problem/B1

    题意:

    有一个01回文字符串,两个人博弈,每次可以选择以下1种操作执行

    1、把1个0变成1

    2、若字符串不是回文串,且上一次没有执行操作2(按2个人一起算次数算的上一次),翻转字符串

    当字符串变为全1时,谁执行的操作1次数少谁获胜

    若0的个数有偶数个

    可以得到后手立于不败之地,因为先手第一步只能执行操作1,后手在先手的对称位置跟着执行操作1,一定不会败。

    后手可以在它最后一步的时候执行操作2,这样先手最后一步必须执行操作1,先手比后手多执行2次操作,后手获胜

    若0的个数有奇数个,可以得出中间位置必为0

    先手第一步把这个0变为1,然后就变成了上面的局面

    这样先手之后会比后手少执行2次操作1,加上第1次,最终比后手少执行一次操作1,先手获胜

    特判:若0只有1个,后手胜

    #include<bits/stdc++.h>
     
    char s[1003];
     
    int main()
    {
        int T,n,m;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            scanf("%s",s+1);
            m=0;
            for(int i=1;i<=n;++i)
                if(s[i]=='0') ++m;
            if(!(m%2)) printf("BOB
    ");
            else 
            {
                if(m==1) printf("BOB
    ");
                else printf("ALICE
    ");
            }
        }
    }
    作者:xxy
    本文版权归作者和博客园共有,转载请用链接,请勿原文转载,Thanks♪(・ω・)ノ。
  • 相关阅读:
    三种解决IE版本兼容性问题
    CSS 如何让超链接访问后和访问前的颜色不同且访问后仍保留hover和active效果
    bootstrap 笔记用法
    STL优缺点
    输出最大回文数
    将一组单词逆序输出
    排序算法
    背包问题
    二进制
    sstream
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/15254083.html
Copyright © 2020-2023  润新知