博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LightOJ 1296 Again Stone Game(sg函数)题解
阅读量:6493 次
发布时间:2019-06-24

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

题意:每次必须拿且只能拿不超过一半的石头,不能拿为败

思路:显然算出每个的sg函数,但是范围1e9显然不能直接打表。所以先打表找规律,发现偶数一直是自己的一半,奇数好像没规律。偶数x的sg函数值是x/2,说明前x/2~x-1的sg函数值涵盖了所有0~x/2集合的值,那么比他大1的奇数x+1少了x/2的sg函数值,那么x+1的sg函数值就是x/2的sg函数值,然后不断递归。

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;const int maxn = 1000 + 10;const int seed = 131;const ll MOD = 1e9 + 7;const int INF = 0x3f3f3f3f;using namespace std;int main(){ int T, Case = 1; scanf("%d", &T); while(T--){ ll ans = 0, n, a; scanf("%lld", &n); while(n--){ scanf("%lld", &a); if(a & 1){ while(a & 1) a >>= 1; ans ^= a / 2; } else ans ^= a / 2; } if(ans) printf("Case %d: Alice\n", Case++); else printf("Case %d: Bob\n", Case++); } return 0;}

打表代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;const int maxn = 1000 + 10;const int seed = 131;const ll MOD = 1e9 + 7;const int INF = 0x3f3f3f3f;using namespace std;int sg[maxn], s[maxn];void getSG(){ sg[0] = 0; for(int i = 1; i < maxn; i++){ memset(s, 0, sizeof(s)); for(int j = 1; j <= i / 2; j++){ s[sg[i - j]] = 1; } for(int j = 0; j < maxn; j++){ if(!s[j]){ sg[i] = j; break; } } }}int main(){ getSG(); for(int i = 1; i < maxn; i++) cout << i << " " << sg[i] << endl; int T, Case = 1; scanf("%d", &T); while(T--){ ll ans = 0, n, a; scanf("%lld", &n); while(n--){ scanf("%lld", &a); ans ^= sg[a]; } if(ans) printf("Case %d: Alice\n", Case++); else printf("Case %d: Bob\n", Case++); } return 0;}

 

转载于:https://www.cnblogs.com/KirinSB/p/9720577.html

你可能感兴趣的文章
字符串变量小议
查看>>
232. Implement Queue using Stacks
查看>>
Poj(1469),二分图最大匹配
查看>>
和菜鸟一起学linux之V4L2摄像头应用流程【转】
查看>>
spin_lock、spin_lock_irq、spin_lock_irqsave区别【转】
查看>>
删除 mac 垃圾桶内清除不掉的文件
查看>>
【响应式编程的思维艺术】 (5)Angular中Rxjs的应用示例
查看>>
/bin/bash^M: bad interpreter: No such file or dire
查看>>
python xml rpc
查看>>
Java设置以及获取JavaBean私有属性进阶
查看>>
db2表结构导出导入,数据库备份
查看>>
策略模式
查看>>
第二 周作业总结
查看>>
OrderOnline——项目概述
查看>>
POJ-2739(Water)
查看>>
【转】第三节 UNIX文件系统结构
查看>>
为什么sql里面not in后面的子查询如果有记录为NULL的,主查询就查不到记录
查看>>
Angular7里面实现 debounce search
查看>>
Linux 内核链表
查看>>
git学习------>Git 分支管理最佳实践
查看>>