博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1907||poj3480 sg博弈
阅读量:5077 次
发布时间:2019-06-12

本文共 1398 字,大约阅读时间需要 4 分钟。

这题就相当于取火柴游戏的第二种。

题意:最后取到的人为败,每次只能从一堆中取>=1的个数。

看了点论文,真不知道这些人是真没想的,无线崇拜。表示:论文还没看懂。

按照下面这个做的。

我们提出定理里的两个限制:1、SG函数为不为0。2、有没有某单一游戏的SG函数大于1。

    通过这两个限制,我们可以组合出4种情况:

    (1)SG==0,有某单一游戏的SG>1。

    (2)SG!=0,有某单一游戏的SG>1。(必胜SJ)

    (3)SG==0,无某单一游戏的SG>1。(必胜SJ)

    (4)SG!=0,无某单一游戏的SG>1。

View Code
// I'm lanjiangzhou//C#include 
#include
#include
#include
#include
#include
//C++#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;//*************************OUTPUT*************************#ifdef WIN32#define INT64 "%I64d"#define UINT64 "%I64u"#else#define INT64 "%lld"#define UINT64 "%llu"#endif//**************************CONSTANT***********************#define INF 0x3f3f3f3f// aply for the memory of the stack//#pragma comment (linker, "/STACK:1024000000,1024000000")//endconst int maxn = 1010;int a[maxn];int main(){ int t; scanf("%d",&t); while(t--){ memset(a,0,sizeof(a)); int n; int flag=0; scanf("%d",&n); int t=0; for(int i=0;i
1){ flag++; } t=(t^a[i]); } if(t==0){ if(flag){ printf("Brother\n"); } else printf("John\n"); } else if(t!=0){ if(flag){ printf("John\n"); } else printf("Brother\n"); } } return 0;}

 

转载于:https://www.cnblogs.com/lanjiangzhou/archive/2013/04/13/3018357.html

你可能感兴趣的文章
从一个标准 url 里取出文件的扩展名
查看>>
map基本用法
查看>>
poj-1163 动态规划
查看>>
Golang之interface(多态,类型断言)
查看>>
Redis快速入门
查看>>
BootStrap---2.表格和按钮
查看>>
Linear Algebra lecture 2 note
查看>>
CRC计算模型
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>
java类加载和对象初始化
查看>>
对于负载均衡的理解
查看>>
django简介
查看>>
window.event在IE和Firefox的异同
查看>>
常见的js算法面试题收集,es6实现
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>