zoukankan      html  css  js  c++  java
  • HDU 2897 邂逅明下【bash博弈】

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

    HDU 2897 邂逅明下

    大意:一堆石子共有n个,A,B两人轮流从中取,每次取的石子数必须在[p,q]区间内,若剩下的石子数少于p个,当前取者必须全部取完。最后取石子的人输。给出n,p,q,问先取者是否有必胜策略?

    Bash博弈的变形
    假设先取者为A,后取者为B,初始状态下有石子n个,除最后一次每次取的石子个数必须在[p,q]区间内,则:
    1.若当前石子共有n = (p+q)*r个,则A必胜,必胜策略为:
        A第一次取q个,以后每次若B取k个,A取(p+q-k)个,如此最后必剩下p个给B,A胜
    2.若n = (p+q)*r+left,(1<left<=p),则B必胜,必胜策略为:
       每次取石子活动中,若A取k个,则B取(p+q-k)个,那么最后必剩下left个给A,
       此时left<=p,A只能一次取完,B胜
    3.若n = (p+q)*r+left,(p<left<p+q),则A必胜,必胜策略为:
       A第一次取t(1<left-t<=p)个,以后每次若B取k个,A取(p+q-k)个,
       那么最后必剩下1<left-t<=p个给B,A胜

    View Code
    1 #include<stdio.h>
    2  int main()
    3 {
    4 int n,p,q;
    5 while(scanf("%d%d%d",&n,&p,&q)!=EOF)
    6 {
    7 int left = n%(p+q);
    8 if(left<=p&&left>0)
    9 {
    10 printf("LOST\n");
    11 }else
    12 printf("WIN\n");
    13 }
    14 return 0;
    15 }
  • 相关阅读:
    【Vjudge】P1989Subpalindromes(线段树)
    【Luogu】P3358最长k可重区间集问题(费用流)
    【未有之有】洛森设定随笔
    14-Perl 引用
    13-Perl 子程序(函数)
    12-Perl 时间日期
    11-Perl 运算符
    10-Perl 循环
    9-Perl 条件语句
    8-Perl 哈希
  • 原文地址:https://www.cnblogs.com/AndreMouche/p/1996126.html
Copyright © 2011-2022 走看看