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;
    }
    
  • 相关阅读:
    P1144 最短路计数
    P2966 [USACO09DEC]牛收费路径Cow Toll Paths
    P2419 [USACO08JAN]牛大赛Cow Contest
    P1462 通往奥格瑞玛的道路
    P1346 电车
    P1339 [USACO09OCT]热浪Heat Wave
    P1418 选点问题
    P1330 封锁阳光大学
    P1182 数列分段Section II
    P2661 信息传递
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14732874.html
Copyright © 2011-2022 走看看