zoukankan      html  css  js  c++  java
  • E

        E - 娜娜梦游仙境系列——莫名其妙的插曲

    E - 娜娜梦游仙境系列——莫名其妙的插曲

    Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others)

    Problem Description

    娜 娜因为帮桃花村民们解决了一大难题而受到村民们的尊敬,不过由于娜娜还想继续探索这个神奇的世界,只好恋恋不舍地与村民告别。当娜娜离开村庄的一刻,娜娜 失忆了!她不记得桃花村的一切,她不记得之前吃了很多糖果,她不记得她为了过湖而跳了半天,甚至她连自己的名字都不记得了!娜娜盲目地四处溜达,突然迎面 走来了一个白马王子,他问:“你是Alice吗?”。娜娜心想:“Alice?好熟的名字啊,难道这就是我的名字吗?",便回答:”是的。请问您是?“白 马王子很高兴地说:”我叫Bob,我找你找了一辈子了,没有你,我总是被父王忘记,我们回王宫吧!"于是娜娜就迷迷糊糊地被带到了王宫。

    国王:“你就是Alice?怎么士别三日,你变痴呆了啊,你先和我的儿子Bob先玩一玩游戏,我看看你是不是脑子有问题。”娜娜为了证明自己脑子没问题,只好与Bob玩起了游戏。

    游戏规则很简单,一开始有一个集合,集合里有n个不同的数,然后Alice(娜娜)与Bob轮流进行操作,每人都可以任意选择两个数a,b,不妨设 a>b,不过要求a-b不在集合中,把a-b放入集合。如果轮到某人,无法进行任何操作,则该人输掉游戏。作为职业博弈选手,娜娜即使失忆了也能凭 着身体的直觉去进行最优操作。那么问,当Alice(娜娜)与Bob都沿着最优策略进行,女士优先(即娜娜先手),最终谁会获胜?

    Input

    多组数据,首先是一个正整数t(t<=20),表示数据的组数

    对于每组数据,首先是一个整数n(1<=n<=1,000),然后是n个整数x[i](0<x[i]<=1,000,000,000),表示集合。保证集合元素不会出现相同。

    Output

    对于每组数据,若Alice(娜娜)最终胜利,输出"Win"

    若Bob最终胜利,输出"Lose"

    若无法分出胜负,输出"Draw",(均不包括双引号,注意大小写,建议复制)

    Sample Input

    2
    5
    1 2 3 4 5
    5
    1 2 3 4 6

    Sample Output

    Lose
    Win

    Hint

    样例1,一开始无论娜娜选择哪两个元素,其差值均包括在集合中,故娜娜无法操作,Bob胜利,输出Lose

    样例2,一开始娜娜只能选择1和6这两个元素,并把6-1=5放入集合中,则集合变为1,2,3,4,5,6 Bob无法操作,Alice(娜娜)胜利,输出Win

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <string>
     7 #include <vector>
     8 #include <set>
     9 #include <map>
    10 #include <stack>
    11 #include <queue>
    12 #include <sstream>
    13 #include <iomanip>
    14 using namespace std;
    15 typedef long long LL;
    16 const int INF = 0x4fffffff;
    17 const double EXP = 1e-5;
    18 const int MS = 1005;
    19 const int SIZE = 10005;
    20 
    21 int num[MS];
    22 int flag[MS];
    23 int n;
    24 
    25 int gcd(int a,int b)
    26 {
    27       return b==0?a:gcd(b,a%b);
    28 }
    29 
    30 int main()
    31 {
    32       int T;
    33       scanf("%d",&T);
    34       while(T--)
    35       {
    36             scanf("%d",&n);
    37             for(int i=0;i<n;i++)
    38                   scanf("%d",&num[i]);
    39             int g=num[0];
    40             for(int i=1;i<n;i++)
    41                   g=gcd(g,num[i]);
    42             int maxv=-INF;
    43             for(int i=0;i<n;i++)
    44             {
    45                   num[i]/=g;
    46                   if(num[i]>maxv)
    47                         maxv=num[i];
    48             }
    49             int cnt=0;
    50             memset(flag,0,sizeof(flag));
    51             for(int i=0;i<n;i++)
    52                   if(flag[i]==0)
    53             {
    54                   flag[i]=1;
    55                   cnt++;
    56             }
    57             cnt=maxv-cnt;
    58             if(cnt&1)
    59                   printf("Win
    ");
    60             else
    61                   printf("Lose
    ");
    62 
    63       }
    64       return 0;
    65 }
  • 相关阅读:
    初窥Opencv
    24课时VC之思考>编辑控件
    24课时VC之思考>列表框与组合框
    递归归并排序 思想 JAVA实现
    插入排序 思想 JAVA实现
    AJAX发送json,SpringMVC 接收JSON,@RequestBody
    SpringBoot设置默认启动页的2种方式
    选择排序 思想 JAVA实现
    快速排序(一) 思想 JAVA实现
    spring security之logoutHandler中的CookieClearingLogoutHandler
  • 原文地址:https://www.cnblogs.com/767355675hutaishi/p/4423516.html
Copyright © 2011-2022 走看看