洛谷P2148 E&D——打表
题目:https://www.luogu.org/problemnew/show/P2148
先打表找个规律:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int sg[][];
void dfs(int x,int y)
{
if(sg[x][y]!=-)return;
int sum=;
for(int i=;i<x;i++)
{
dfs(i,x-i);
sum|=(<<sg[i][x-i]);
}
for(int i=;i<y;i++)
{
dfs(i,y-i);
sum|=(<<sg[i][y-i]);
}
for(int i=;i<=;i++)
if((sum&(<<i))==)
{
sg[x][y]=i;sg[y][x]=i;
return;
}
}
int main()
{
memset(sg,-,sizeof sg);
sg[][]=;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
dfs(i,j);
printf("%3d",sg[i][j]);
}
printf("\n");
}
return ;
}
打表
根据数字出现的规律性,发现:
SG=1:i % 2 ==1 && j % 2 ==1;
SG=2:i % 4 == 1,2 && j % 4 == 1,2;
SG=3:i % 8 == 1,2,3,4 && j % 8 == 1,2,3,4;
……
所以按规律写好了。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
ll T,n,ans;
ll sg(ll x,ll y)
{
ll tmp=;
for(ll i=;;i++,tmp*=)
if((x-)%tmp<(tmp>>)&&(y-)%tmp<(tmp>>))
return i;
}
int main()
{
scanf("%d",&T);
while(T--)
{
ans=;
scanf("%d",&n);
for(ll i=,x,y;i<=n/;i++)
{
scanf("%d%d",&x,&y);
ans^=sg(x,y);
}
if(ans)printf("YES\n");
else printf("NO\n");
}
return ;
}
洛谷P2148 E&D——打表的更多相关文章
- 洛谷P2148 [SDOI2009]E&D(博弈论)
洛谷题目传送门 先安利蒟蒻仍在施工的博弈论总结 首先根据题目,石子被两两分组了,于是根据SG定理,我们只要求出每一组的SG值再全部异或起来就好啦. 把每一对数看成一个ICG,首先,我们尝试构造游戏的状 ...
- 【洛谷P1816】忠诚——ST表做法
看了两个小时RMQ并位运算,对二进制勉勉强强有了个初步了解,不能说精通(可能今年CSP前都做不到精通),但是记熟板子做做题还是没有问题的 以下是正式题解,相信你看过了题目,我介绍的是ST表的做法(很简 ...
- 洛谷 [P2148] E&G
SG函数的应用 首先每一组都是独立的,所以我们可以求出每一组的SG值异或出来. 那么怎么求每一组的SG值呢,网上的题解都是打表找规律,但其实这个规律是可以证明的 先看规律: x为奇数,y为奇数:SG= ...
- 洛谷 P2251 质量检测(st表)
P2251 质量检测 题目提供者ws_ly 标签 难度 普及/提高- 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的 ...
- 【洛谷3865】 【模板】ST表(猫树)
传送门 洛谷 Solution 实测跑的比ST表快!!! 这个东西也是\(O(1)\)的,不会可以看我上一篇Blog 代码实现 代码戳这里
- 洛谷P4240 毒瘤之神的考验 【莫比乌斯反演 + 分块打表】
题目链接 洛谷P4240 题解 式子不难推,分块打表真的没想到 首先考虑如何拆开\(\varphi(ij)\) 考虑公式 \[\varphi(ij) = ij\prod\limits_{p | ij} ...
- 【洛谷】P2880 [USACO07JAN]平衡的阵容Balanced Lineup(st表)
题目背景 题目描述: 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连 ...
- 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
题面 传送门(loj) 传送门(洛谷) 题解 我们对于每一个与宫殿相连的点,分别计算它会作为多少个点的最短路的起点 若该点为\(u\),对于某个点\(p\)来说,如果\(d=|p-u|\),且在\([ ...
- [NOIP1999] 提高组 洛谷P1014 Cantor表
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...
随机推荐
- mysql主从读写分离,分库分表
1.分表 当项目上线后,数据将会几何级的增长,当数据很多的时候,读取性能将会下降,更新表数据的时候也需要更新索引,所以我们需要分表,当数据量再大的时候就需要分库了. a.水平拆分:数据分成多个表 b. ...
- Java生成读取条形码和二维码图片
原文:http://www.open-open.com/code/view/1453520722495 package zxing; import com.google.zxing.BarcodeFo ...
- cms完整视频教程+源码 孔浩老师 全131讲
话不多说,请看如下链接, 项目在此文件夹目录下: JAVA专区>3.深入Java Web>3.1.cms项目 很多反馈说无效 本次 2016.09.12 发布最新链接 链接:https ...
- Mathematica 表达式求值
表达式是变量之间的运算关系.表达式求值就是对变量赋值并运算出结果的过程. 针对于Mathematica中的表达式.有两种方法获得其值. 一是对对应的变量直接赋值.这样对应的表达式在调用时便会直接运算得 ...
- JNI——访问数组
JNI在处理基本类型数组和对象数组上面是不同的.对象数组里面是一些指向对象实例或者其它数组的引用. 因为速度的原因,先通过GetXXXArrayElements函数把简单类型的数组转化成本地类型的数组 ...
- mybatis一对多
mapper.xml <mapper namespace="com.oracle.dao.one2manyDao"> <resultMap type=" ...
- Ubuntu 16.04 同时使用python3.5
Python 3.x版本使用pip3,它会把你想下载的包放到usr/local/lib/python3.5/dist-packages/下,而非usr/local/lib/python2.7/dist ...
- TinyXML中类分析
TiXmlElement: 对应于XML的元素,定义了对element的相关操作 成员函数: TiXmlElement (const char * in_value); TiXmlElement( c ...
- pom.xml和testng.xml
转自:http://www.cnblogs.com/penghong2014/p/4380199.html <project xmlns="http://maven.apache.or ...
- mysql读写分离(主从复制)实现
mysql主从复制 怎么安装mysql数据库,这里不说了,仅仅说它的主从复制.过程例如以下: 主从最好都是同一种系统比方都是linux,或者都是windows,当然混合着也是能够成功,不解释了 1.主 ...