码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 2897 巴什博弈变形 ***

时间:2015-09-05 00:02:11      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

大意:一堆石子共有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胜

 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              printf("LOST\n");
10         else  printf("WIN\n");
11     }    
12     return 0;
13 }

 

hdu 2897 巴什博弈变形 ***

标签:

原文地址:http://www.cnblogs.com/cnblogs321114287/p/4782565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!