zoukankan      html  css  js  c++  java
  • CodeForces1373B

    题意

    给定一个只有0和1的字符串,每次操作只能删除相邻两个不同的字符。

    Alice先手,Bob后手,最后不能再继续操作的人输。

    Alice赢输出 DA ,Bob赢输出 NET

    思路

    1. 判断是不是全部为0或者1,如果数字全部相同,则Bob赢,直接输出NET。

    2. 接下去判断0和1的个数哪个小,小的那个数字再判断奇偶即可。因为无论如何只要有0和1存在,这两个就一定会被抵消。

    注意

    虽然这题和博弈无关,但是每次碰到这种题第一想法还是博弈,补充一下异或的知识,老是记不住。

    同0异1
    0^0=0、1^1=0
    0^1=1、1^0=1、
    3^5 = 6
    

    AC代码

    #include<iostream>
    #include<string.h>
    #include<stdio.h>
    #include<algorithm>
    #include<map>
    
    using namespace std;
    typedef long long ll;
    #define inf 0x3f3f3f3f
    
    char s[110];
    
    int main()
    {
        int T;
        cin>>T;
        while(T--)
        {
            cin>>s;
            int l=strlen(s);
            int ji=0,ou=0;
            for(int i=0;i<l;i++)
            {
                if((s[i]-'0')%2) ji++;
                else ou++;
            }
            if(ji==l||ou==l)
                cout<<"NET"<<endl; // Bob win
            else
            {
                int x=min(ji,ou);
                if(x&1) // 奇数
                    cout<<"DA"<<endl; // Alice win
                else // 偶数
                    cout<<"NET"<<endl; // Bob win
            }
        }
        return 0;
    }
    
  • 相关阅读:
    数据库结构中的"树"
    Jquery学习
    cms系统也不复杂
    让你的博客园变灰
    IList对象排序方法
    计算机简介(二)
    在同一台电脑上使用U盘时快时慢的解决方法
    计算机简介
    合并排序
    javascript小结
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14732874.html
Copyright © 2011-2022 走看看