博客
关于我
SDUT2161:Simple Game(NIM博弈+巴什博弈)
阅读量:406 次
发布时间:2019-03-06

本文共 628 字,大约阅读时间需要 2 分钟。

题意

n堆石子,每次可以取一堆至三堆任意非零石子数,取完者赢,问最后谁能赢

分析

以前我们做过NIM博弈是对一堆进行操作,现在换成了三堆,其实对于n堆都一样一堆的情况

如果最后二进制每位数的1的个数存在不为偶数,则胜,都为偶数,则败
三维的情况(类比)
如果最后二进制每位数的1的个数不为4的倍数,则胜,否则败
对于n维的情况
如果最后二进制每位数的1的个数不为(n+1)的倍数,则胜,否则败

trick

代码

#include
int t,n,x;int a[30];int main(){ for(scanf("%d",&t);t--;) { scanf("%d",&n); for(int i=1;i<30;++i) a[i]=0; for(int i=1;i<=n;++i) { scanf("%d",&x); for(int cnt=1;x;x>>=1,cnt++) a[cnt]+=(x&1); } int flag=0; for(int i=1;i<30;++i) if(a[i]%4) { flag=1;break; } if(flag) puts("Yes");else puts("No"); }}

转载地址:http://pzokz.baihongyu.com/

你可能感兴趣的文章
linux线程调度策略
查看>>
软中断和实时性
查看>>
Linux探测工具BCC(可观测性)
查看>>
Python开发之序列化与反序列化:pickle、json模块使用详解
查看>>
采坑 - 字符串的 "" 与 pd.isnull()
查看>>
Matplotlib绘制漫威英雄战力图,带你飞起来!
查看>>
机器学习是什么
查看>>
《你当像鸟飞往你的山》总结
查看>>
《我是猫》总结
查看>>
《抗糖化书》总结
查看>>
apache虚拟主机配置
查看>>
mcrypt加密以及解密过程
查看>>
go等待N个线程完成操作总结
查看>>
ReactJs入门教程-精华版
查看>>
Python 之网络式编程
查看>>
MySql5.5安装步骤及MySql_Front视图配置
查看>>
mybatis绑定错误-- Invalid bound statement (not found)
查看>>
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
查看>>
SpringCloud微服务(03):Hystrix组件,实现服务熔断
查看>>
云计算之路-阿里云上:0:25~0:40网络存储故障造成网站不能正常访问
查看>>