poj.org/problem?id=3537 (题目链接)

题意

  给出一个1*n的棋盘,每次可以选择一个没被标记过的点打标记,若经过某一步操作使得出现3个连续的标记,则最后操作的人获胜。问是否存在先手必胜策略。

Solution

  我们可以很快发现,若给x位置打上标记,那么棋盘就被分成了2份,分别是x-3以及n-x-2,于是${sg[n]=mex\{sg[x-3]~XOR~sg[n-x-2]}\}$,1<=x<=n。因为n<=2000,直接暴力求解sg函数即可。

代码

// poj3537
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=2010;
int n,sg[maxn]; int cal(int x) {
if (x<0) return 0;
if (sg[x]!=-1) return sg[x];
bool vis[maxn];
memset(vis,0,sizeof(vis));
for (int i=1;i<=x;i++)
vis[cal(i-3)^cal(x-i-2)]=1;
for (int i=0;;i++) if (!vis[i]) return sg[x]=i;
}
int main() {
int n;
scanf("%d",&n);
memset(sg,-1,sizeof(sg));
if (cal(n)) printf("1");
else printf("2");
return 0;
}

  

【poj3537】 Crosses ans Crosses的更多相关文章

  1. 【HDOJ】1462 Word Crosses

    字符串水题,这么做可能比较巧妙. /* 1462 */ #include <iostream> #include <string> #include <map> # ...

  2. poj3537 Crosses ans Crosses

    题目描述 题解: 一道非常简单的$SG$函数应用. 对于一个长度求它的$SG$函数,然后判断是否为$0$即可. 代码: #include<cstdio> #include<cstri ...

  3. 【整理】2-SAT

    2-satisfiability,我们一般将其缩写为 2-sat. 了解全名有助于我们对这个算法的理解.     百度翻译:‘satisfiability’---“可满足性,适定性”. “合取范式可满 ...

  4. poj 3575 Crosses and Crosses(SG函数)

    Crosses and Crosses Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 3063   Accepted: 11 ...

  5. 论文阅读(XiangBai——【PAMI2018】ASTER_An Attentional Scene Text Recognizer with Flexible Rectification )

    目录 XiangBai--[PAMI2018]ASTER_An Attentional Scene Text Recognizer with Flexible Rectification 作者和论文 ...

  6. 【教程】简易CDQ分治教程&学习笔记

    前言 辣鸡蒟蒻__stdcall终于会CDQ分治啦!       CDQ分治是我们处理各类问题的重要武器.它的优势在于可以顶替复杂的高级数据结构,而且常数比较小:缺点在于必须离线操作. CDQ分治的基 ...

  7. 【BZOJ-1146】网络管理Network DFS序 + 带修主席树

    1146: [CTSC2008]网络管理Network Time Limit: 50 Sec  Memory Limit: 162 MBSubmit: 3495  Solved: 1032[Submi ...

  8. UOJ58 【WC2013】糖果公园

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  9. 【spoj705】 Distinct Substrings

    [题目描述] 给定一个字符串,计算其不同的子串个数. [输入格式] 一行一个仅包含大写字母的字符串,长度<=50000 [输出格式] 一行一个正整数,即不同的子串个数. [样例输入] ABABA ...

随机推荐

  1. Git版本控制工具(一)----git的安装及创建版本库

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  2. 第23章 SEH结构化异常处理(2)_编译器对系统SEH机制的封装

    23.2 编译器层面对系统SEH机制的封装 23.2.1 扩展的EXCEPTION_REGISTRATION级相关结构:VC_EXCEPTION_REGISTRATION (1)VC_EXCEPTIO ...

  3. JS的Document属性和方法

    Attributes 存储节点的属性列表(只读)childNodes 存储节点的子节点列表(只读)dataType 返回此节点的数据类型Definition 以DTD或XML模式给出的节点的定义(只读 ...

  4. canvas模仿微信抢红包功能

    1.原理:先创建一张img图片,用filter滤镜制作毛玻璃效果. 2.利用绝对定位,使canvas刚好盖在img上面. 3.利用canvas原生clip函数剪辑一个圆形. 地址:http://san ...

  5. work_queue 函数调用栈

    init_workqueues --->  create_worker --> kthread_create_on_node

  6. 泛型委托 Predicate/Func/Action

    Predicate 泛型委托  表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素.看看下面它的定义: // Summar ...

  7. SQL Server 维护计划实现数据库备份(Step by Step)

    转自:http://www.cnblogs.com/gaizai/archive/2011/11/18/2254445.html 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSM ...

  8. JS insertAdajcentHTML 方法简介

    修改节点的内容除了常用的innerHTML和innerText之外,还有insertAdjacentHTML和insertAdjacentText方法,可以在指定的地方插入内容.insertAdjac ...

  9. Navicat创建和设计MySQL事件

    1.开启定时器 0:off 1:on SET GLOBAL event_scheduler = 1; 2.在navicat左侧选择一个数据库,单击“时间”-“创建事件”,弹出一个窗口.

  10. mysql5.7.12直接解压zip包,安装过程

    MySQL-5.7.12-winx64.zip解压安装方式 1.解压文件到你想要安装的位置.     本人是直接解压到E盘. 2.配置环境变量,在path中放入:E:\mysql-5.7.12-win ...