HDU4387 Stone Game

原创 2015年07月09日 18:58:04

题目链接: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;
}
























版权声明:本文为博主原创文章,未经博主允许不得转载。

a simple stone game--k倍动态规划减法游戏

a simple stone game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth...
  • bless924295
  • bless924295
  • 2016年05月10日 18:25
  • 945

男人不易八题之POJ 1738 AN OLD STONE GAME解题报告

原题目传送门: http://poj.org/problem?id=1738 题目大意是有n堆石子放成一行,石子堆有各自的重量。要求把这些石子合并为一堆,规则为合并相邻的两堆石子,得分为合并后的石子...
  • C20161009
  • C20161009
  • 2016年08月21日 14:45
  • 317

hdu1115 Lifting the Stone(几何,求多边形重心模板题)

(几何,求多边形重心模板题)
  • u012860063
  • u012860063
  • 2014年06月28日 09:25
  • 990

Again Stone Game (通过SG函数找规律)

Again Stone Game (通过SG函数找规律):http://acm.hust.edu.cn/vjudge/contest/view.action?cid=112620#problem/F ...
  • PNAN222
  • PNAN222
  • 2016年04月16日 14:58
  • 479

罗塞塔石碑(Rosetta Stone)安装指南

罗塞塔石碑软件将语言与场景直接结合,培养学习人员看到场景直接联想到所学习的语言,而不需要通过我们的母语转换,这种方式符合我们学习母语的过程。学习过程中也不需借助母语,因此适合文盲学习,例如我儿子大笑。...
  • bigwigwind
  • bigwigwind
  • 2015年03月22日 15:53
  • 2105

杭电1279 Stone Game(经典博弈)

Stone Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot...
  • u013634213
  • u013634213
  • 2014年08月27日 21:16
  • 655

解题报告:HDU1729 Stone Game SG博弈

Stone Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total...
  • qq_32570675
  • qq_32570675
  • 2016年08月23日 09:31
  • 196

hdu 1729 Stone Game 【博弈-找规律】

题目传送 思路: 这题状态很多,不可能存起来,只能找规律 规律就是,f(i,j) (1) j*(j+1)>=i,则f(i,j)=j-i; (2) 否则,p为满足p*(p+1) 解题代码: #inc...
  • Summer_via
  • Summer_via
  • 2016年08月11日 08:51
  • 111

第十四章 14.1节练习

练习14.1 在什么情况下重载
  • chxw098
  • chxw098
  • 2014年09月16日 10:55
  • 604

漫步数学分析二十七——Stone-Weierstrass定理

在讨论连续函数与一致收敛时,最基本的两个结论是上篇文章讨论的Arzela-Ascoli定理以及本文要讨论的斯通-魏尔斯特拉斯(Stone-Weierstrass)定理。斯通-魏尔斯特拉斯定理主要是为了...
  • u010182633
  • u010182633
  • 2017年03月05日 21:04
  • 1828
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU4387 Stone Game
举报原因:
原因补充:

(最多只允许输入30个字)