51nod_1661: 黑板上的游戏(sg函数 找规律)
先打一个sg函数的表,找找规律,发现sg函数可以递归求解
打表代码如下
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long LL;
- ;
- bool vis[N];
- int sg[N];
- int k;
- void init()
- {
- memset(sg,,sizeof(sg));
- memset(vis,false,sizeof(vis));
- sg[]=,sg[]=;
- ;i<=;i++)
- {
- memset(vis,,sizeof(vis));
- )/k;j<i;j++)
- vis[sg[j]]=true;
- ;j<=;j++)
- if(vis[j]==false)
- {
- sg[i]=j;
- break;
- }
- }
- }
- int main()
- {
- ios::sync_with_stdio(false);
- while(cin>>k)
- {
- init();
- ;i<=;i++)
- {
- printf(? '\n':' ');
- }
- puts("");
- puts("");
- }
- }
得到的一个结果
- k=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
- sg[ ]= sg[ ]= sg[ ]= sg[ ]=
当然k可以改来改去地试
再之后,如果异或和不为0,要特殊处理下,也是根据打表的规律,具体方法见代码
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long LL;
- ;
- LL k;
- int n;
- LL a[N];
- LL sg(LL x)
- {
- ||x==) ;
- )
- )/k;
- return sg(x/k);
- }
- int main()
- {
- while(~scanf("%d%lld",&n,&k))
- {
- LL ans=;
- ;i<=n;i++)
- {
- scanf("%lld",&a[i]);
- ans^=sg(a[i]);
- }
- // cout<<ans<<endl;
- if(ans)
- {
- int pos;
- LL y;
- ;i<=n;i++)
- {
- LL sgx=sg(a[i]),t=sgx^ans;
- pos=i;
- y=t+(t+k-)/(k-);
- // cout<<y<<' '<<(a[i]+k-1)/k<<endl;
- )
- {
- if(y>=a[i]) break;
- )/k)
- {
- printf("Alice %d %lld\n",pos,y);
- ;
- }
- y=y*k+;
- }
- }
- printf("Alice %d %lld\n",pos,y);
- }
- else
- puts("Bob");
- }
- }
51nod_1661: 黑板上的游戏(sg函数 找规律)的更多相关文章
- BZOJ 1228 E&G(sg函数+找规律)
把一对石子堆看出一个子游戏.打出子游戏的sg表找规律.. 这个规律我是一定找不出来的... 对于i,j,如果 (i-1)%pow(2,k+1) < pow(2,k) (j-1)%pow(2,k+ ...
- 51nod 1661: 黑板上的游戏(sg函数 找规律)
题目链接 先打一个sg函数的表,找找规律,发现sg函数可以递归求解 打表代码如下 #include<bits/stdc++.h> using namespace std; typedef ...
- HDU-4664 Triangulation 博弈,SG函数找规律
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4664 题意:一个平面上有n个点(一个凸多边形的顶点),每次可以连接一个平面上的两个点(不能和已经连接的 ...
- HDU 1517 A Multiplication Game (SG函数找规律)
题意:两个玩家玩一个游戏,从 p = 1,开始,然后依次轮流选择一个2 - 9的数乘以 p,问你谁先凑够 p >= n. 析:找规律,我先打了一下SG函数的表,然后就找到规律了 我找到的是: 1 ...
- 51nod-1661 1661 黑板上的游戏(组合游戏)
题目链接: 1661 黑板上的游戏 Alice和Bob在黑板上玩一个游戏,黑板上写了n个正整数a1, a2, ..., an,游戏的规则是这样的:1. Alice占有先手主动权.2. 每个人可以选取一 ...
- 组合游戏 - SG函数和SG定理
在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点 ...
- 【poj 3090】Visible Lattice Points(数论--欧拉函数 找规律求前缀和)
题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数. 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题-- [poj 24 ...
- HDU 1536 S-Nim (组合游戏+SG函数)
题意:针对Nim博弈,给定上一个集合,然后下面有 m 个询问,每个询问有 x 堆石子 ,问你每次只能从某一个堆中取出 y 个石子,并且这个 y 必须属于给定的集合,问你先手胜还是负. 析:一个很简单的 ...
- BZOJ1188 [HNOI2007]分裂游戏(SG函数)
传送门 拿到这道题就知道是典型的博弈论,但是却不知道怎么设计它的SG函数.看了解析一类组合游戏这篇论文之后才知道这道题应该怎么做. 这道题需要奇特的模型转换.即把每一个石子当做一堆石子,且原来在第i堆 ...
随机推荐
- 使用python遍历指定城市的一周气温
处于兴趣,写了一个遍历指定城市五天内的天气预报,并转为华氏度显示.把城市名字写到一个列表里这样可以方便的添加城市.并附有详细注释 1 import requests import json#定义一个函 ...
- python3 简单实现从csv文件中读取内容,并对内容进行分类统计
新手python刚刚上路,在实际工作中遇到如题所示的问题,尝试使用python3简单实现如下,欢迎高手前来优化import csv #打开文件,用with打开可以不用去特意关闭file了,python ...
- vue-cli webpack在node环境下安装使用
第一步,需要下载并安装node.js以及他的npm组件: 第二步,用node -v;npm -v来测试node.js以及npm是否安装成功(建议用GIT命令行工具,因为GIT是linux系统),如果显 ...
- 利用arpspoof和urlsnarf 进行ARP嗅探
地址解析协议 (ARP, Address Resolution Protocol) 是如何将网络设备的MAC地址和其IP地址关联起来的,这样在同一个局域网内的设备就能相互知道彼此的存在.ARP基本上就 ...
- SQL Server Alwayson读写分离配置
标签:MSSQL/只读路由 概述 Alwayson相对于数据库镜像最大的优势就是可读副本,带来可读副本的同时还添加了一个新的功能就是配置只读路由实现读写分离:当然这里的读写分离稍微夸张了一点,只能称之 ...
- CentOS 安装数据库笔记
1.配置YUM源 # 下载mysql源安装包 shell.noarch.rpm # 安装mysql源 shell.noarch.rpm 检查mysql源是否安装成功 shell> yum rep ...
- 可视化之Earth NullSchool
上两篇我们分别介绍了<Berkeley Earth>和<AQICN>两个网站,今天来看一下Earth NullSchool. 这个网站的特色是风向图,之前有一篇可视化之风向图, ...
- tomcat之 Tomcat 7.0.78 单机多实例配置
前言:JDK(JavaDevelopment Kit)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最广泛的javaSDK. JDK是整个Java ...
- 从OneNote走出,技术博客养成记
2010年9月北上求学,在一所普通本科院校学习计算机专业,年少轻狂未能领悟计算机技术的本质渐生弃学之意. 2013年9月南下参军,在一个电抗部队从事通信指控专业,填补了扛枪演练的男儿情怀却又无法抵制对 ...
- [1] [转]软件架构之三层架构和MVC的关系
注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联 ...