• hdu 5591 BestCoder Round #65(博弈)


    题意:

    问题描述
    ZYBZYB在远足中,和同学们玩了一个“数字炸弹”游戏:由主持人心里想一个在[1,N][1,N]中的数字XX,然后玩家们轮流猜一个数字,如果一个玩家恰好猜中XX则算负,否则主持人将告诉全场的人当前的数和XX比是偏大还是偏小,然后猜测的范围就会相应减小,一开始的范围是[1,N][1,N].每个玩家只能在合法的范围中猜测.
    
    现在假设只有两个人在玩这个游戏,并且两个人都已经知道了最后的XX,若两个人都采取最优策略.求X in [1,N]X[1,N]中是后手胜利的XX数量.
    输入描述
    第一行一个整数TT表示数据组数。
    
    接下来TT行,每行一个正整数NN.
    
    1 leq T leq 1000001T100000,1 leq N leq 100000001N10000000
    输出描述
    TT行每行一个整数表示答案.
    输入样例
    1
    3
    
    输出样例
    1
    

    思路:

    可以看成捡石头的问题:
    1.假设左右的长度相同,A捡多少则B也捡多少,这最后B必赢
    2.若是长度不一样,则A先捡一部分使左右一样,则A必赢

    所以只有当n为奇数且x在中间时才可能赢


    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    typedef long long ll;
    #define N 100050
    
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int x;
            scanf("%d",&x);
            if(x % 2)
            {
                printf("1
    ");
            }
            else
                printf("0
    ");
        }
    }
    

      




  • 相关阅读:
    安卓长按应用图标弹出快捷方式(shortcut)
    网站主题变暗黑,快速解决
    android 11适配的其他注意点
    vue cli3.0构建多页面应用
    Alibaba Canal config 漏洞验证
    检测magiskhide
    Flutter垃圾回收器
    UIbutton 在动画过程中也能响应事件,主要利用layer的hitTest方法
    CocoaPods 私有化
    Android WorkManager使用入门
  • 原文地址:https://www.cnblogs.com/Przz/p/5409669.html
Copyright © 2020-2023  润新知