The most orzed and orzing man

题目链接:http://acm.xidian.edu.cn/problem.php?id=1184

Sprague-Grundy定理:https://zhuanlan.zhihu.com/p/20611132#!

博弈论 SG函数

看到这题一脸懵逼啊,看了一下午才弄明白,是这五题最难的(但是为什么这么多人过,不科学啊)= =

Sprague-Grundy定理大致讲了这样一个东西:

对于一个满足条件的独立博弈游戏,有着必败态和必胜态,我们只需要知道当前状态是不是必胜态,就可以知道会不会赢。然而多个多个博弈游戏组成的博弈集群游戏,只知道各个游戏是否为必胜态是不行的(必胜态数大于1时,有可能胜,有可能败),因此就需要计算SG值:

对于一个必胜态,如果它只能转移到必败态,那么将其定义为一级必胜态;

如果它能转移到一级必胜态或必败态,那么将其定义为二级必胜态;

如果它能转移到一级到k级必胜态或必败态,那么将其定义为k+1级必胜态。

而多个游戏的总状态就是当前各个游戏的状态级数(必败态为零级状态)的异或值(详细证明见上面的链接)。

对于这题的单个游戏来说,当a[i]%3=0时,为必败态(零级状态),当a[i]%3=1时为一级必胜态,当a[i]%3=2时为二级必胜态,所以整个游戏群的状态为各个状态级数的异或值。

然后发现一个多星期前的cf好像有类似的博弈题 是道B题 当时游少直接跟我说怎么写 后来也没问...惭愧= =

代码如下:

 #include<cstdio>
using namespace std;
int n,t;
int main(void){
while(~scanf("%d",&n)){
int ans;
scanf("%d",&ans);
ans%=;
for(int i=;i<n;++i){
scanf("%d",&t);
t%=;
ans^=t;
}
if(ans)printf("Yes\n");
else printf("No\n");
}
}

The most orzed and orzing man的更多相关文章

  1. hdu5197 DZY Loves Orzing(FFT+分治)

    hdu5197 DZY Loves Orzing(FFT+分治) hdu 题目描述:一个n*n的矩阵里填入1~n^2的数,要求每一排从前往后能看到a[i]个数(类似于身高阻挡视线那种),求方案数. 思 ...

随机推荐

  1. Ueditor1.4.3实现跨域上传到独立文件服务器,完美解决单文件和多文件上传!

    再写配置方法之前先吐槽一下网上的各种教程,TM没一个有卵用,一群傻屌不会写就别写,写了就要负责. 百度google搜了半天,全是配置什么document.domain,根域名什么的,我只想对你说: 好 ...

  2. error C2448 函数样式初始值设定项类似函数定义

    类似这种的 int grow_expansion(elen, e, b, h) int elen; REAL *e; REAL b; REAL *h; { // function definition ...

  3. 正则表达式之js检验密码强度

    最近一直在做通行证项目,里面的注册模块中输入密码需要显示密码强度(低中高).今天就把做的效果给大家分享下,代码没有网上搜索的那么复杂,能够满足一般的需求. html 代码如下: <!DOCTYP ...

  4. SqlDataReader中的GetSqlValue()方法

    sdr.GetValue(0) "Title"sdr.GetValue(1)4sdr.GetValue(2)falsesdr.GetValue(3)0sdr.GetValue(4) ...

  5. swift3.0 运行时获取类的属性

    //定义Person类 class Person: NSObject { var name: String? //注意这里基本数据类型我定义的是必选属性 var age: Int = override ...

  6. 集合点(lr_rendezvous)

    含义: 当通过controller虚拟多个用户执行该脚本时,用户的启动或运行都不一定是同时的.集合点是在脚本的某处设置一个标记,当有虚拟用户运行到这个标记时,停下等待,知道所有用户到达这个标记处,再一 ...

  7. U31网管配置

    1.新建网元和子架配置: 在拓扑图空白处新建对象-创建承载传输网元-选择设备-填写网元名称(A).网元类型.IP(查询出SNP的),网关IP会自动在此基础上加2.如果数据库为空先选离线- 机架子架配置 ...

  8. Java learning notes (1):Basic Knowlege points

    Basic Knowlege points: 1: it's necessary that there is only one public class in per .java file 2: .j ...

  9. c++中string类型可以直接进行比较

    以下代码在Ubuntu14.10下实现 /*------------------------- filename is demo.cpp --------------------------*/ #i ...

  10. python1 tkinter

    turtle 图形: turtle.color(c) 设置笔的颜色turtle.fillcolor(c) 设置笔填充颜色turtle.begin_fill()   在填充颜色前访问这个方法turtle ...