zoukankan      html  css  js  c++  java
  • 三色抽卡游戏 博弈论nim

      

    你的对手太坏了!在每年的年度三色抽卡游戏锦标赛上,你的对手总是能打败你,他的秘诀是什么?

    在每局三色抽卡游戏中,有n个卡组,每个卡组里所有卡片的颜色都相同,且颜色只会是红(R)、绿(G)、蓝(B)中的一种。第i个卡组有vi张卡片。

    对决双方每次只能选择一个还未抽完卡的卡组,从中拿走若干张卡片,可以全拿走,但不能一张都不拿。你只能选择颜色为红或者绿的卡组,而对手只能选择颜色为蓝或者绿的卡组。

    你是先手,你和对手轮流行动,谁不能操作了就输了。

    因为你的对手每次总是能打败你,你决定写一个程序来帮助你做出决策。

    给定游戏刚开始时的卡组情况,你的程序需要判断假设双方都按照最优策略操作,那么你是否会赢?

    Input

    第一行包含一个正整数T(1T100),表示测试数据的组数。

    每组数据第一行包含一个正整数n(1n1000),表示卡组的数量。

    接下来n行,每行一个字符ci(ci{R,G,B})和一个正整数vi(1vi1000),分别表示第i个卡组的颜色以及卡片数量。

    Output

    对于每组数据输出一行,若你能赢,输出YES,否则输出NO。

    Sample Input

    3
    2
    R 2
    B 3
    2
    B 2
    R 3
    3
    R 5
    B 6
    G 1

    Sample Output

    NO
    YES
    NO


    主要是看绿色的牌 看谁能多抽一张 或者平局 就是nim游戏 比赛的时候没有反应过来 一直在找规律 不过反应过来也不会写
    nim游戏只要进行位运算即可
    #include<bits/stdc++.h>
    using namespace std;
    //input
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define repp(i,a,b) for(int i=(a);i>=(b);i--)
    #define RI(n) scanf("%d",&(n))
    #define RII(n,m) scanf("%d%d",&n,&m);
    #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
    #define RS(s) scanf("%s",s);
    #define ll long long
    #define inf 0x3f3f3f3f
    #define REP(i,N)  for(int i=0;i<(N);i++)
    #define CLR(A,v)  memset(A,v,sizeof A)
    //////////////////////////////////
    #define N 500+5
    int main()
    {
       int cas;
       RI(cas);
       while(cas--)
       {
           int n;
           RI(n);
           int hong=0;
           int lan=0;
           int flag=0;
           while(n--)
           {
               char s[4];
               RS(s);int x;RI(x);
               if(s[0]=='B')lan+=x;
               if(s[0]=='R')hong+=x;
               if(s[0]=='G')flag^=x;
           }
           if(flag)hong++;
           if(hong>lan)
            printf("YES
    ");
           else printf("NO
    ");
       }
        return 0;
    }
    View Code






  • 相关阅读:
    【BZOJ】1710: [Usaco2007 Open]Cheappal 廉价回文
    【BZOJ】3302: [Shoi2005]树的双中心 && 2103: Fire 消防站 && 2447: 消防站
    【BZOJ】1706: [usaco2007 Nov]relays 奶牛接力跑
    【Atcoder】CODE FESTIVAL 2017 qual A D
    【BZOJ】3038: 上帝造题的七分钟2 && 3211: 花神游历各国
    【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜
    【BZOJ】1754: [Usaco2005 qua]Bull Math
    【BZOJ】1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
    【BZOJ】1828: [Usaco2010 Mar]balloc 农场分配(经典贪心)
    【BZOJ】1709: [Usaco2007 Oct]Super Paintball超级弹珠
  • 原文地址:https://www.cnblogs.com/bxd123/p/10658112.html
Copyright © 2011-2022 走看看