zoukankan      html  css  js  c++  java
  • P2953 [USACO09OPEN]牛的数字游戏Cow Digit Game

                    P2953 [USACO09OPEN]牛的数字游戏Cow Digit Game

    题目描述

    Bessie is playing a number game against Farmer John, and she wants you to help her achieve victory.

    Game i starts with an integer N_i (1 <= N_i <= 1,000,000). Bessie goes first, and then the two players alternate turns. On each turn, a player can subtract either the largest digit or the smallest non-zero digit from the current number to obtain a new number. For example, from 3014 we may subtract either 1 or 4 to obtain either 3013 or 3010, respectively. The game continues until the number becomes 0, at which point the last player to have taken a turn is the winner.

    Bessie and FJ play G (1 <= G <= 100) games. Determine, for each game, whether Bessie or FJ will win, assuming that both play perfectly (that is, on each turn, if the current player has a move that will guarantee his or her win, he or she will take it).

    Consider a sample game where N_i = 13. Bessie goes first and takes 3, leaving 10. FJ is forced to take 1, leaving 9. Bessie takes the remainder and wins the game.

    贝茜和约翰在玩一个数字游戏.贝茜需要你帮助她.

    游戏一共进行了G(1≤G≤100)场.第i场游戏开始于一个正整数Ni(l≤Ni≤1,000,000).游

    戏规则是这样的:双方轮流操作,将当前的数字减去一个数,这个数可以是当前数字的最大数码,也可以是最小的非0数码.比如当前的数是3014,操作者可以减去1变成3013,也可以减去4变成3010.若干次操作之后,这个数字会变成0.这时候不能再操作的一方为输家. 贝茜总是先开始操作.如果贝茜和约翰都足够聪明,执行最好的策略.请你计算最后的赢家.

    比如,一场游戏开始于13.贝茜将13减去3变成10.约翰只能将10减去1变成9.贝茜再将9减去9变成0.最后贝茜赢.

    输入输出格式

    输入格式:

     

    • Line 1: A single integer: G

    • Lines 2..G+1: Line i+1 contains the single integer: N_i

     

    输出格式:

     

    • Lines 1..G: Line i contains 'YES' if Bessie can win game i, and 'NO' otherwise.

     

    输入输出样例

    输入样例#1:
    2 
    9 
    10 
    
    输出样例#1:
    YES 
    NO 
    

    说明

    For the first game, Bessie simply takes the number 9 and wins. For the second game, Bessie must take 1 (since she cannot take 0), and then FJ can win by taking 9.

    博弈论 用到了sg函数和sg定理 然而我一开始并没有看出来 

    乱搞拿了40 ,这数据是要多水啊

    组合博弈:三大游戏

    博弈论:sg函数

     1 #include <cstdio>
     2 #include <cctype>
     3 
     4 const int MAXN=1000010;
     5 
     6 int n,t;
     7 
     8 int sg[MAXN];
     9 
    10 inline void read(int&x) {
    11     int f=1;register char c=getchar();
    12     for(x=0;!isdigit(c);c=='-'&&(f=-1),c=getchar());
    13     for(;isdigit(c);x=x*10+c-48,c=getchar());
    14     x=x*f;
    15 }
    16 
    17 int hh() {
    18     read(n);
    19     for(int mn,mx,t,i=1;i<MAXN-1;++i) {
    20         mn=9;mx=0;t=i;
    21         while(t) {
    22             int b=t%10;
    23             if(b) {mx=mx<b?b:mx;mn=mn>b?b:mn;}
    24             t/=10;
    25         }
    26         sg[i]=(sg[i-mx]&sg[i-mn])^1;
    27     }
    28     for(int t,i=1;i<=n;++i) {
    29         read(t);
    30         sg[t]?printf("YES
    "):printf("NO
    ");
    31     }
    32     return 0;
    33 }
    34 
    35 int sb=hh();
    36 int main(int argc,char**argv) {;} 
    代码
  • 相关阅读:
    I.MX6 Manufacturing Tool V2 (MFGTool2) ucl2.xml hacking
    I.MX6 Manufacturing Tool V2 (MFGTool2) Update Command List (UCL) User Guide translate
    I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking
    I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking
    Eclipse中设置在创建新类时自动生成注释
    code
    Oracle的rownum原理和使用(整理几个达人的帖子)
    Catalog与Schema
    对于oracle监听器的配置
    64位WIN7+oracle11g+plsql安装
  • 原文地址:https://www.cnblogs.com/whistle13326/p/7646796.html
Copyright © 2011-2022 走看看