关闭

HDU4387 Stone Game

标签: hdu博弈论算法
155人阅读 评论(0) 收藏 举报
分类:

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4387

                                                        Stone Game


Problem Description

  Alice and Bob are playing a game. It is played in 1*N grids. Each grid can be occupied by one stone. Alice has K white stones on the left (numbered 1 to K from left to right), and Bob has K black stones on the right (numbered 1 to K from right to left). They take turns to move their own stones, and Alice moves first. In each move, the player must choose one stone to move to the nearest empty grid forward (Alice moves to the right, Bob moves to the left). If one player cannot find any stone to move, he wins.
  Now Alice asks you to find a winning strategy of the game. Can you help him?


 

Input

  There are multiple test cases. In each case, there is one line containing two integers N, K.

Technical Specification
  3 <= N <= 1,000,000, 1 < K*2 < N
 

Output

  For each case, print in one line containing the case number (starting with 1) and the winning information. If Alice loses, just print “Bob”, otherwise print “Alice” and the first stone he chooses. If there are multiple stones he can choose, he will choose the rightmost one.
 

Sample Input
3 1 4 1
 

Sample Output
Case 1: Bob Case 2: Alice 1
 
题意:
  AB两个人玩游戏,给出n,d,n代表格子数,d代表AB各拥有的棋子数,A只能往右移动,B只能往左移动,而且AB只能移动到最靠近自己的第一个空上,A先移动,若谁先移动到不能移动为止谁就获胜,如果A赢了,输出他第一颗移动的棋子;

题解:
   移动到不能移动为止,即最终状态,A都在右边,B都在左边。分类讨论:
  1、d=1,即AB都只有一颗棋子,若n为偶数,A赢,若n为奇数,B赢;
  2、d>1,此时的原则是谁在中间n-2d的空中占的棋子数多谁就赢,因为A先走,所以不管奇数还是偶数个空,都是A赢
    只要讨论A走的第一颗棋子就行了:
                           (n-2d)=1,A移动d位子上的棋子为最优方案;
                           否则,A移动第一颗棋子为最优方案;

代码如下:
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
    int n,d,k=1;
    while(~scanf("%d%d",&n,&d))
    {
    	if(d==1 && n%2!=0) printf("Case %d: Bob\n",k++);
    	else
	    {
	                int kk=n-2*d;
			if(kk==1)printf("Case %d: Alice %d\n",k++,d);
			else printf("Case %d: Alice 1\n",k++);	
	    }
    }
    return 0;
}
























0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12888次
    • 积分:597
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:5篇
    • 译文:0篇
    • 评论:1条
    最新评论