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堆 ...
随机推荐
- 我做的第一个程序(菜鸟的java课堂笔记)
内存: 堆区,栈区,常量区,计数区,代码区: 数据类型: 基本数据类型:整形,浮点型,布尔型 boolean 只能返回真假值,字符型: 引用数据类型:类,数组: 基本数据类型-->直接存放到栈区 ...
- day_1_登录接口
#/usr/bin/env python3# -*- coding: utf-8 -*-##This is an account login authentication##Version 1.0## ...
- 如何编写Spring-Boot自动配置
摘要 本文主要介绍如何把一个spring的项目(特别是一些公共工具类项目),基于spring boot的自动配置的思想封装起来,使其他Spring-Boot项目引入后能够进行快速配置. AutoCon ...
- [IR] BWT+MTF+AC
BWT (Burrows–Wheeler_transform)数据转换算法 MTF(Move-to-front transform)数据转换 基于统计的压缩算法:游程编码 良心PPT: bwt_bas ...
- 用redis实现TOMCAT集群下的session共享
上篇实现了 LINUX中NGINX反向代理下的TOMCAT集群(http://www.cnblogs.com/yuanjava/p/6850764.html) 这次我们在上篇的基础上实现session ...
- SQL SERVER 自动生成 MySQL 表结构及索引 的建表SQL
SQL SERVER的表结构及索引转换为MySQL的表结构及索引,其实在很多第三方工具中有提供,比如navicat.sqlyog等,但是,在处理某些数据类型.默认值及索引转换的时候,总有些 ...
- vue.js实现数据动态响应(Vue.set的应用)
在vue里面,我们操作最多的就是各种数据,在jquery里面,我们习惯通过下标定向找到数据,然后重新赋值 比如var a[0]=111;(希望上家公司原谅菜鸟的我写了不少这样的代码
- java基础之IO篇
IO流 在计算机中的流是有方向的即为IO流,分为输入流和输出流,他们的方向都是以服务的方向为主,向服务器中发送指令等等就是输出流,服务器给出的反应等等,我们都说为输出流. 字节流 字符流 输入流 In ...
- Asp.net MVC 如何对所有用户输入的字符串字段做Trim处理
经常需要对用户输入的数据在插入数据库或者判断之前做Trim处理,针对每个ViewModel的字段各自做处理是我们一般的想法.最近调查发现其实也可以一次性实现的. MVC4.6中实现方式 1,实现IMo ...
- js中年份、月份下拉框
<select id="year" style="width: 100px;"></select> <select id=&quo ...