POJ 3537 Crosses and Crosses(SG/还未想完全通的一道SG)

题目链接

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int sg[2010];

int get_sg(int n)
{
    if(n<0) return 0;
    if(sg[n]!=-1) return sg[n];

    bool vis[2010];
    //莫名其妙!
    //vis[]数组要声明在函数里,如果放外面会WA
    memset(vis,0,sizeof(vis));
    for(int i=1;i<=n;i++)
        vis[get_sg(n-i-2)^get_sg(i-3)]=1; //子局面异或
    //每画一个x,左右各两个格子都不能选,即有五个格不能选
    //所以分为左边i-3,右边n-i-2(即 n-(i+2),相当于左边的全都舍掉了)两个子游戏
    for(int i=0;;i++)
        if(!vis[i])
            return sg[n]=i;
}

int main()
{
    int n;
    memset(sg,-1,sizeof(sg));
    while(~scanf("%d",&n))
    {
        printf("%d\n",get_sg(n)?1:2);
    }
}
时间: 2024-10-12 23:38:27

POJ 3537 Crosses and Crosses(SG/还未想完全通的一道SG)的相关文章

Luogu1099 树网的核 (暴力?,floyd?)(还未想正解,暴力就A了)

阅读理解两小时,手敲暴力思考5分钟.然后\(n^3\)就A了 暴力代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define R(a,b,c) for(register int a = (b); a <= (c); ++ a) #define nR(a,b,c) for(register i

poj 3537 Crosses and Crosses 博弈论之grundy值

题意: 给1*n的格子,轮流在上面叉叉,最先画得3个连续叉叉的赢,问先手必胜还是必败. 分析: 求状态的grundy值(也就是sg值),具体怎么求详见代码,为什么这么求要自己想的,只可意会(别人都说去看game theory,呵呵). 代码: //poj 3537 //sep9 #include <iostream> #include <set> using namespace std; int grundy[2048]; int h[2048]; int get_grundy(i

POJ 3537 Crosses and Crosses

http://poj.org/problem?id=3537 题目大意: 两人在1*N的格子上轮流画X,每一次可以在空白的格子上画X,如果一个玩家把三个X连起来,那么就获胜.你的任务是判断是先手胜还是后手. 思路: 在纸上画画你会发现,你画一个格子后,他的左边两个和右边两个是不能画的(如果存在) ,也就是说,你每画一次,那么就排除掉5个格子 所以分为左边i - 3和右边n- i- 2两个部分.用SG函数求解. #include<cstdio> #include<cstring> c

【POJ】【3537】Crosses and Crosses

博弈论 相当于放了x的位置,左右4格都不能再放x了,谁无处可放就输. n<=2000 直接枚举后继状态,暴力求SG函数即可. 例: 0000000->x..0000 / .x..000 / ..x..00 / 0..x..0 / 00..x.. 记忆化搜索写挂了……还是顺序DP靠谱= =(跟S-Nim类似的写法,暴力求SG函数) 1 Source Code 2 Problem: 3537 User: sdfzyhy 3 Memory: 692K Time: 141MS 4 Language:

【CodeForces】343D Water tree (线段树好题!还未弄懂)

/* 此题的方法除了用线段树求子树,通过标记父亲,更新儿子的方法,来更新祖先,学习了. 对于建树的方法由于并没有说明父亲与儿子的顺序,所以需要通过两次添加. 并且pre变量可以获得父亲的位置,还未弄懂! */ #define _CRT_SECURE_NO_WARNINGS #include<cstring> #include<cstdio> #include<iostream> #include<algorithm> using namespace std;

分类信息之争又将持续 赶集网化险但还未为夷

赶集网获得老虎基金和凯雷投资2亿美元投资的消息一出,再次引爆整个互联网,分类信息市场再起波澜.新一轮融资之后,赶集网成功化险,之前捉襟见肘的资金问题得到妥善解决. 舆论唱空不管用?老虎凯雷豪赌赶集网 在赶集网宣布获得老虎基金和凯雷投资新一轮2亿美元融资之后,业界舆论砸开了锅,虽然仍有不少围观者对赶集网持悲观的态度,但更多的人是好奇为何被老虎凯雷会豪赌被唱空了半年之久的赶集网. 其实也不难理解,在腾讯投资58同城之后,分类信息市场彻底被激活,尤其是资本市场,在腾讯的带动下更加不会错过这次机会.腾讯

照片墙效果(交换位置还未实现)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <st

窗外,夏季似乎还未离去

窗外,夏季似乎还未离去.只有在一阵阵秋雨过后,才能闻到那股秋季的凉意.对于秋天,总有一种说不出的留恋,留念着秋天那份薄凉,留念着曾经的自己,留恋着曾经的许多人,许多事,留恋着那些已经回不到过去的旧时光. 思绪里,似乎闻到了桂花飘香的味道,依旧是那股泛着淡淡的暗香.脑海中浮现了当初那群带着青涩与单纯的少年,就是在这样的季节里相聚在一起,而后一起经过了数个春秋,在那段葱茏的时光里留下一点一滴的痕迹. http://www.huxiu.com/group/thread/504554http://www

阿里云香港机房故障(到现在还未解决)

早上10点被客户电话叫醒,到现在问题还未解决.联系了就说是香港网络运营商问题,会尽快修复,可连具体时间都无法提供,难道这这么等下去? 我们的客户都快爆发了,这次真害死人了. 平时看阿里挺牛B的才买了他们的云服务. 可是作为一个云服务商,遇到这种问题,竟然没有一点备用方案. 要这样的话我们使用阿里云服务还有什么保障. 有没有跟我们一样悲剧的朋友.T T. 官方公告 阿里云香港region访问异常故障 尊敬的用户,目前香港机房故障仍在处理中.对由此异常导致的服务中断,我们深表歉意.同时我们会尽快启动