zoukankan      html  css  js  c++  java
  • BZOJ1299[LLH邀请赛]巧克力棒——Nim游戏+搜索

    题目描述

    TBL和X用巧克力棒玩游戏。每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度。TBL先手两人轮流,无法操作的人输。 他们以最佳策略一共进行了10轮(每次一盒)。你能预测胜负吗?

    输入

    输入数据共20行。 第2i-1行一个正整数Ni,表示第i轮巧克力棒的数目。 第2i行Ni个正整数Li,j,表示第i轮巧克力棒的长度。

    输出

    输出数据共10行。 每行输出“YES”或“NO”,表示TBL是否会赢。如果胜则输出"NO",否则输出"YES"

    样例输入

    3
    11 10 15
    5
    13 6 7 15 3
    2
    15 12
    3
    9 7 4
    2
    15 12
    4
    15 12 11 15
    3
    2 14 15
    3
    3 16 6
    4
    1 4 10 3
    5
    8 7 7 5 12

    样例输出

    YES
    NO
    YES
    YES
    YES
    NO
    YES
    YES
    YES
    NO

    提示

    20%的分数,N<=5,L<=100。
    40%的分数,N<=7。 50%的分数,L<=5,000。
    100%的分数,N<=14,L<=1,000,000,000。

    先手如果想赢只要第一次将最多的异或和为0的巧克力棒(即剩余的巧克力棒无论如何取都没有异或和为0的方案)都拿出来即可。这样先手就将必败态(异或和为0)留给了后手,后手无论是吃巧克力还是取巧克力都会将必胜态(异或和不为0)留给先手。那么只要搜索一下所有方案看是否有异或和为0的方案即可,因为有异或和为0的方案就说明先手能取最多异或和为0的巧克力棒。

    #include<set>
    #include<map>
    #include<queue>
    #include<cmath>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define ll long long
    using namespace std;
    int T;
    int n;
    int a[20];
    int ans;
    int num;
    void dfs(int dep,int x)
    {
        if(dep==n+1)
        {
            if(num==1&&x==0)
            {
                ans=1;
            }
            return ;
        }
        dfs(dep+1,x);
        num=1;
        dfs(dep+1,x^a[dep]);
    }
    int main()
    {
        T=10;
        while(T--)
        {
            scanf("%d",&n);
            num=0;
            ans=0;
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            dfs(1,0);
            if(ans==0)
            {
                printf("YES
    ");
            }
            else
            {
                printf("NO
    ");
            }
        }
    }
  • 相关阅读:
    C语言II—作业03
    C语言II博客作业01
    学期总结
    第一次作业!
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    第三次作业!
  • 原文地址:https://www.cnblogs.com/Khada-Jhin/p/9609654.html
Copyright © 2011-2022 走看看