HDU-5011 Game 博弈

n堆珠子,每次选一堆至少取一个,然后可以选择是否把这堆剩下的分为任意的a,b两部分,谁先取完谁赢,问先手的是否能获胜。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
#include <algorithm>
using namespace std;
int n;
int main()
{
	int x;
	int ans;
	while(scanf("%d",&n)!=EOF)
	{
		ans=0;
		for(int i=0;i<n;i++)
		{
			scanf("%d",&x);
			ans^=x;
		}
		if(ans)
		{
			cout<<"Win"<<endl;
		}
		else
		{
			cout<<"Lose"<<endl;
		}
	}
	return 0;
}
时间: 2024-10-01 07:47:57

HDU-5011 Game 博弈的相关文章

hdu 5011 (nim博弈模版)

//nim博弈 //有n堆石头,两人轮流每次从一堆中拿至少1,之多全部的石头,没有石头可拿为lose //判断先手是win还是lose # include <stdio.h> # include <algorithm> # include <string.h> using namespace std; int main() { int n,i; __int64 a,sum; while(~scanf("%d",&n)) { sum=0; fo

hdu 5011

E - Game Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 5011 Appoint description:  System Crawler  (2014-12-13) Description Here is a game for two players. The rule of the game is described bel

hdu 3032(博弈sg函数)

题意:与原来基本的尼姆博弈不同的是,可以将一堆石子分成两堆石子也算一步操作,其它的都是一样的. 分析:由于石子的堆数和每一堆石子的数量都很大,所以肯定不能用搜索去求sg函数,现在我们只能通过找规律的办法求得sg的规律. 通过打表找规律可以得到如下规律:if(x%4==0) sg[x]=x-1; if(x%4==1||x%4==2) sg[x]=x; if(x%4==3) sg[x] = x+1. 打表代码: #include<iostream> #include<cstdio> #

HDU 5011 Game(博弈论)

题目地址:HDU 5011 比赛的时候看那么多人过直接傻眼了..无奈,这题是真不会做,博弈论一点不会,得好好补补了.没想到这题的代码竟然是这样..当时想了好多水的方法乱蒙也没水过去.. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #includ

HDU 5011 Game(西安网络赛E题)

HDU 5011 Game 题目链接 思路:其实就求一个Nim和即可,要推也不难推,和为0下一个必然是胜态,因为至少取走一个,在怎么分也达不到原来那个值了,如果是非0值,就和原来Nim一样必然可以取一堆使得变成0 代码: #include <cstdio> #include <cstring> const int N = 100005; int n; long long a, sum; int main() { while (~scanf("%d", &

HDU 5011 Game(Nim博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5011 贴一发博弈的链接的链接:http://blog.csdn.net/u012860063/article/details/21816635 Problem Description Here is a game for two players. The rule of the game is described below: ● In the beginning of the game, ther

HDU 5011 Game Nim博弈 (涉及scanf和cin效率比较)

scanf是格式化输入,printf是格式化输出. cin是输入流,cout是输出流.效率稍低,但书写简便. 格式化输出效率比较高,但是写代码麻烦. 流输出操作效率稍低,但书写简便. cout之所以效率低,正如一楼所说,是先把要输出的东西存入缓冲区,再输出,导致效率降低. 缓冲区比较抽象,举个例子吧: 曾经就遇到过这样的情况(类似的), int i; cout<<'a'; cin>>i; cout<<'b'; 运行结果什么都没看到输出,输入一个整型比如3再按回车后ab同

HDU 1907 Nim博弈变形

1.HDU 1907 2.题意:n堆糖,两人轮流,每次从任意一堆中至少取一个,最后取光者输. 3.总结:有点变形的Nim,还是不太明白,盗用一下学长的分析吧 传送门 分析:经典的Nim博弈的一点变形.设糖果数为1的叫孤独堆,糖果数大于1的叫充裕堆,设状态S0:a1^a2^..an!=0&&充裕堆=0,则先手必败(奇数个为1的堆,先手必败).S1:充裕堆=1,则先手必胜(若剩下的n-1个孤独堆个数为奇数个,那么将那个充裕堆全部拿掉,否则将那个充裕堆拿得只剩一个,这样的话先手必胜).T0:a1

hdu 4763 stone(博弈)

F - Stone Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4764 Description Tang and Jiang are good friends. To decide whose treat it is for dinner, they are playing a game. Specifically, Tang an

HDU S-Nim(博弈 SG)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1536 Problem Description Arthur and his sister Caroll have been playing a game called Nim for some time now. Nim is played as follows: The starting position has a number of heaps, all containing some, no