zoukankan      html  css  js  c++  java
  • Hdu 2176 取(m堆)石子游戏

    Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=2176

    取石子游戏,以前都是问能否胜,这次问更实际的问题--如何取胜。

    思路很简单:取走一定量的石子,使其变为必败态。先算出总的状态,就是所有石子数异或后的值,取一个变量名叫allXor。

    然后将allXor与其中一堆石子异或,得出的值假设叫oneXor,则得出的值为除这堆石子外的其他所有堆的石子的数量的异或值。

    然后很容易想到如果这堆石子剩下的数量为oneXor,那么所有石子堆的数量异或得出的值为0,也就是必败态。

    #include <iostream>
    #include <vector>
    #include <cstdio>
    
    using namespace std;
    
    int main()
    {
        vector <int> stone;
        vector <int> :: iterator it;
        int n;
        int i;
        int allXor,oneXor;
        int in;
        while( scanf("%d",&n)!=EOF && n )
        {
            stone.clear();
            allXor = 0;   // initial
            for( i=0;i<n;i++ )
            {
                scanf("%d", &in);
                stone.push_back(in);
                allXor ^= in;
            }
    
            if( allXor )   // judge
            {
                printf("Yes
    ");
                for( it=stone.begin();it!=stone.end();it++ )
                {
                    oneXor = allXor ^ *it;
                    /*for( i=0;i<*it;i++ )
                    {
                        if( (oneXor^i) == 0 )
                        {
                            printf("%d %d
    ", *it,i);
                            break;
                        }
                    }*/   // time limit exceeded
                    if( oneXor < *it )
                    {
                        printf("%d %d
    ", *it, oneXor);
                    }
                }
            }
            else
            {
                printf("No
    ");
            }
        }
        return 0;
    }
    
  • 相关阅读:
    JavaScript运行机制 Event Loop
    async 函数
    JavaScript Promise 对象
    pc端rest.css
    微信小程序公用样式类
    移动端base.css
    RegExp正则对象匹配规则
    RegExp正则相关方法
    mysql(五)事务
    mysql(四)海量数据优化
  • 原文地址:https://www.cnblogs.com/Emerald/p/4083455.html
Copyright © 2011-2022 走看看