• hdu 2897巴什博弈变形


    http://acm.hdu.edu.cn/showproblem.php?pid=2897

    题意:一堆石子共n个,A、B两人轮流从中取,每次取得石子数必须在[p,q]区间,若剩下的石子数少于p个,则当前取者必须全部取完。最后取完石子的人输。

    分析:我看分类的时候他写着是用sg打表找规律。我就照做了。我脑残啊。从一堆中取出物体,不就是巴什博弈吗????

    算法分析:

    假设先取者为A,后取者为B,初始状态下有石子n个,除最后一次外其他每次取得石子个数必须在[pq]之间。

    1. 若当前石子共有n =p+q* r个,则A必胜,必胜策略为:A第一次取q个,以后每次若BK个,A取(p+q-k)个,如此下去最后必剩下p个给B,所以A必胜。
    2. n =p+q)* r + left个(1< left <= pB必胜,必胜策略为:每次取石子活动中,若Ak个,则B去(p+q-k)个,那么最后剩下left个给A,此时left <= p,所以A只能一次去完,B胜。
    3. n =p+q* r + left个(p < left <= q),则A必胜,必胜策略为:A第一次取t1< left t <= p)个,以后每次Bk个,则A取(p+q-k)个,那么最后留下1< left t <= pB,则A胜。
    4. View Code
      // I'm lanjiangzhou
      //C
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include <ctype.h>
      #include <math.h>
      #include <time.h>
      //C++
      #include <iostream>
      #include <algorithm>
      #include <cstdio>
      #include <cstdlib>
      #include <cmath>
      #include <cstring>
      #include <cctype>
      #include <stack>
      #include <string>
      #include <list>
      #include <queue>
      #include <map>
      #include <vector>
      #include <deque>
      #include <set>
      using namespace std;
      
      //*************************OUTPUT*************************
      #ifdef WIN32
      #define INT64 "%I64d"
      #define UINT64 "%I64u"
      #else
      #define INT64 "%lld"
      #define UINT64 "%llu"
      #endif
      
      //**************************CONSTANT***********************
      #define INF 0x3f3f3f3f
      
      // aply for the memory of the stack
      //#pragma comment (linker, "/STACK:1024000000,1024000000")
      //end
      
      
      int main(){
          int n,p,q;
          while(scanf("%d%d%d",&n,&p,&q)!=EOF){
              int s;
              s=n%(p+q);
              if(s>0&&s<=p) printf("LOST\n");
              else printf("WIN\n");
          }
          return 0;
      }
  • 相关阅读:
    iframe中的页面如何触发父页面事件
    js获取gridview的值
    不出现重复数字,带干扰的验证码
    文本框内不允许输入字母
    后台调用前台JS方法
    在后台得到前台元素,给元素改变属性值或添加属性
    C#常见面试题
    Flex代码生成器 (FCG)
    c#(WinForm)遍历局域网计算机(电脑)获取IP和计算机名称
    VisualSVN Server + Tortoise SVN 使用教程(补充版)
  • 原文地址:https://www.cnblogs.com/lanjiangzhou/p/3022982.html
Copyright © 2020-2023  润新知