Chess (SG + 状态压缩预处理)
#include<bits/stdc++.h>
#define bit(t) (1 << t)
using namespace std; const int maxn = <<;
const int k = ;//k是集合s的大小
int sg[maxn];//sg[n] n表示每堆数量
bool vis[]; void get_sg(){
int maxm = <<;
for(int sta = ; sta < maxm; sta ++){
// printf("**%d**\n",sta);
memset(vis, , sizeof(vis));
for(int i = ; i >= ; i --){
if(sta & bit(i))
for(int j = i - ; j >= ; j --){
if(sta & bit(j))continue;
int tmp = sta;
tmp |= bit(j);
tmp &= (~bit(i));
vis[sg[tmp]] = true;
break;
}
}
for(int i = ; i < ; i ++)
if(!vis[i]){
sg[sta] = i;break;
} }
} int main()
{
get_sg();
int T,n,m,a,sta;scanf("%d",&T);
while(T --){
int goal = ;
scanf("%d",&n);
while(n --){
scanf("%d",&m);
sta = ;
while(m--){
scanf("%d",&a);
sta |= ( << ( - a));
}
goal ^= sg[sta];
}
printf("%s\n",goal?"YES":"NO");
}
}
Chess (SG + 状态压缩预处理)的更多相关文章
- hdu 5724 SG+状态压缩
		Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ... 
- Sudoku (剪枝+状态压缩+预处理)
		[题目描述] In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. ... 
- hdu 5724 Chess 博弈sg+状态压缩
		Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem De ... 
- Codeforces 1017D The Wu(状态压缩+预处理)
		题意: 给你n m q,表示在这一组数据中所有的01串长度均为n,然后给你一个含有m个元素的multiset,之后有q次询问.每次询问会给你一个01串t和一个给定常数k,让你输出串t和multiset ... 
- HDU 5724 Chess (状态压缩sg函数博弈) 2016杭电多校联合第一场
		题目:传送门. 题意:有n行,每行最多20个棋子,对于一个棋子来说,如果他右面没有棋子,可以移动到他右面:如果有棋子,就跳过这些棋子移动到后面的空格,不能移动的人输. 题解:状态压缩博弈,对于一行2^ ... 
- HDU 5724 Chess(SG函数+状态压缩)
		http://acm.split.hdu.edu.cn/showproblem.php?pid=5724 题意: 现在有一个n*20的棋盘,上面有一些棋子,双方每次可以选择一个棋子把它移动到其右边第一 ... 
- uva 1601 poj 3523 Morning after holloween 万圣节后的早晨 (经典搜索,双向bfs+预处理优化+状态压缩位运算)
		这题数据大容易TLE 优化:预处理, 可以先枚举出5^3的状态然后判断合不合法,但是由于题目说了有很多墙壁,实际上没有那么多要转移的状态那么可以把底图抽出来,然后3个ghost在上面跑到时候就不必判断 ... 
- HDU 5742  Chess  SG函数博弈
		Chess Problem Description Alice and Bob are playing a special chess game on an n × 20 chessboard. ... 
- hrbust1841再就业(状态压缩dp)
		本人刚学压缩dp,只能对这些水题写题解 一方面对自己的理解有加深作用 另一方面希望和各位大牛交流交流..... 如果有对状态dp不太了解的童鞋可以参考入门知识:http://wenku.baidu.c ... 
随机推荐
- 九九乘法表python3写入文件中
			写入文件代码如下: with open("e:\\test01.txt","w+",encoding="utf-8") as wq: for ... 
- selenium如何定位同级节点
			场景:当定位某个元素时,发现所需要的元素在同级节点,可以用/following-sibling::* 方法(定位同级的第二位) 当定位统计节点的第二个定位相邻节点. 可以用/preceding ... 
- es手动创建索引,修改索引,删除索引
			1.创建索引 创建索引的语法PUT /my_index{ "settings": { ... any settings ... }, "mappings": { ... 
- es内部的多线程异步并发控制
			version元数据(1)第一次创建一个document的时候,它的_version版本号是1:以后,每次对这个document执行修改或者删除操作,都会对这个_version版本号自动加1(2)在删 ... 
- LeetCode-188.Best Time to Buy and Sell Stock IV
			Say you have an array for which the ith element is the price of a given stock on day i. Design an al ... 
- rpm 安装软件包
			RPM 是RedHat Package Manager (RedHat软件包管理工具)类似windows里面的“添加/删除程序”,rpm执行安装包 RPM执行安装.删除.更新 常用命令组合 -ivh: ... 
- OC常用控件封装
			#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface CreateUI : NSObject ... 
- 如何创建线程第一种继承Thread类
			步骤 1:定义一个类 继承Thread类.2:重写Thread类的run方法.3:直接创建Thread的子类对象创建线程.4:调用start方法开启线程并调用线程的任务run方法执行.-------- ... 
- (转)Mysql LIMIT如何正确对其进行优化
			以下的文章主要是对Mysql LIMIT简单介绍,我们大家都知道LIMIT子句一般是用来限制SELECT语句返回的实际行数.LIMIT取1个或是2个数字参数,如果给定的是2个参数,第一个指定要返回的第 ... 
- react 全局公共组件-----动态弹窗 (dialog)
			react 的时候,总是会用到弹窗,并且各种各样的,一般来说,组件层级嵌套之后,就会出现 z-index层级覆盖的问题 这个时候,就需要一个公共的弹出层,然后我们将需要展示的组件,放到弹出层里面 下面 ... 
