• 盒子游戏(博弈)


    E - 盒子游戏

    有两个相同的盒子,其中一个装了n个球,另一个装了一个球。

    Alice和Bob发明了一个游戏,规则如下:

    Alice和Bob轮流操作,Alice先操作每次操作时,游戏者先看看哪个盒子里的球的数目比较少,

    然后清空这个盒子(盒子里的球直接扔掉),然后把另一个盒子里的球拿一些到这个盒子中,使得两个盒子都至少有一个球。

    如果一个游戏者无法进行操作,他(她)就输了。

    下图是一个典型的游戏:

    面对两个各装一个球的盒子,Bob无法继续操作,因此Alice获胜。

    你的任务是找出谁会获胜。假定两人都很聪明,总是采取最优策略。

    Input
    输入最多包含300组测试数据。

    每组数据仅一行,包含一个整数n(2<=n<=10^9)。

    输入结束标志为n=0。

    Output
    对于每组数据,输出胜者的名字。
    Sample Input
    2
    3
    4
    0

    Sample Output
    Alice
    Bob
    Alice

    应该算博弈吧 发现一到比赛就懒得多想 各种粗暴= =

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<stack>
    #define mem(a,b) memset(a,b,sizeof(a))
    #define ll __int64
    #define MAXN 1000
    #define INF 0x7ffffff
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    using namespace std;
    int main()
    {
    int n,i,j;
    while(scanf("%d",&n)!=EOF)
    {
    if(n==0) break;
    if(n%2==0)
    {
    printf("Alice
    ");
    }
    else
    {
    int temp=1;
    int ok=1;
    while(temp<n)
    {
    temp=temp*2+1;
    if(temp==n) ok=0;
    }
    if(ok)
    printf("Alice
    ");
    else
    printf("Bob
    ");
    }
    }
    return 0;
    }
    

      

  • 相关阅读:
    【贪心】闭区间问题
    【贪心】电视节目安排
    中石油-高精度阶乘-java
    hdu 6444 Neko's loop 单调队列优化DP
    hdu 3415 Max Sum of Max-K-sub-sequence 单调队列优化DP
    51nod 1050 循环数组最大子段和 单调队列优化DP
    hdu 6406 Taotao Picks Apples 线段树 单点更新
    Wannafly 挑战赛22 D 整数序列 线段树 区间更新,区间查询
    dp专题训练
    zoj 3747 递推dp
  • 原文地址:https://www.cnblogs.com/sola1994/p/3915913.html
Copyright © 2020-2023  润新知