洛谷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 … ...
随机推荐
- spark再总结
1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架. dfsSpark基于mapreduce算法实现的分布式计算,拥有HadoopM ...
- 【深入Java虚拟机】之五:多态性实现机制——静态分派与动态分派
方法解析 Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址.这个特性给Java带来了更强大的动态扩 ...
- OSX: diskutil命令-转换成自由空间并再对其分区
声明:本文涉及的操作非常可能会破坏你的系统文件,造成数据丢失.请谨慎模仿,一切后果作者均不承担不论什么责任. 目的: 尽管说比較熟悉diskutil命令和它的GUI前端程序磁盘工具(Disk Util ...
- [原创]安装Ubuntu Server 14.04后
安装后许多软件都没有,需要进行安装. 官方指南:https://help.ubuntu.com/lts/serverguide/index.html 1.修改网络配置文件 用ifconfig查看本地网 ...
- Error: cannot call methods on draggable prior to initialization; attempted to call
cannot call methods on draggable prior to initialization; attempted to call 报这个问题的根本原因是由于你的引用文件有问题 ...
- Intel HEX文件解析
近期有一个需求就是为Arduino开发板做一个基于蓝牙的无线烧录程序.眼下的Arduino程序都是通过USB线连接到电脑的主机上,实际的传输过程是基于USB协议的,这个过程还是比較麻烦的.由于每次的编 ...
- docker compose环境搭建
概述 Docker Compose提供一个简单的基于YAML配置语言.用于描写叙述和组装多容器的分布式应用. 使用docker定义和执行复杂的应用.使用compose,能够在一个文件中,定义多容器的应 ...
- mysql关闭skip-grant-tables快速重置mysql密码
如果你忘记了mysql密码几乎是没有什么好办法可以直接修改密码了,但我们可以在my.ini把加上skip-grant-tables,然后重启mysql就不需要密码了,这时我们再修改root密码,最后再 ...
- iOS之Prefix.pch
本文转载至 http://blog.csdn.net/lvxiangan/article/details/21325093 Prefix.pch的作用和用法 Hello World_Prefix. ...
- 【bzoj3210】花神的浇花集会
将(x,y)转化成(x+y,x-y)可以将切比雪夫距离转化成曼哈顿距离(自己推一推) A.B的切比雪夫距离就是A‘.B‘曼哈顿距离的一半. 那么可以将x.y分离处理,排序中位数即可. 注意如果最后选的 ...