对于这道题,我们需要从(A+B)%3==0这式子考虑。对于第一条式子,我们可以知道,只能是奇偶盒子交替转移。

由第二条式子可知,要么是同余为0的A,B之间转移,要么是余数为1,2之间的 转移。后来仔细比对发现,同余为0的只能是一条路径(即只能在同余为0之间转移)内。对于1,2之间的转移,恰好是两条路径分别是以1,2开始的一条和以4,5盒子开始的一条。三条路径是不相交的。于是,分别是三个单独的SG游戏。

利用梯阶博弈分别对三条路径进行求SG即可。

 #include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; const int MAX=;
int a[MAX],n; int main(){
int cas; int t=;
scanf("%d",&cas);
while(++t<=cas){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
}
int sum=,cnt=-;
for(int i=;i<=n;i+=){
cnt++;
if(cnt&)
sum^=a[i];
}
cnt=-;
for(int i=;i<=n;i+=){
for(int k=;k<&&i+k<=n;k++){
cnt++;
i+=k;
if(cnt&)
sum^=a[i];
}
}
cnt=-;
for(int i=;i<=n;i+=){
for(int k=;k<&&i+k<=n;k++){
cnt++;
i+=k;
if(cnt&)
sum^=a[i];
}
}
if(sum)
printf("Case %d: Alice\n",t);
else
printf("Case %d: Bob\n",t);
}
return ;
}

HDU 3389的更多相关文章

  1. HDU 3389 阶梯博弈变形

    n堆石子,每次选取两堆a!=b,(a+b)%2=1 && a!=b && 3|a+b,不能操作者输 选石子堆为奇数的等价于选取步数为奇数的,观察发现 1 3 4 是无法 ...

  2. 【hdu 3389】Game

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  3. hdu 3389 Game (阶梯博弈)

    #include<stdio.h> int main() { int t,n,ans; int i,j,x; scanf("%d",&t); ;j<=t; ...

  4. HDU 3389 (Nim博弈变形) Game

    参考了众巨巨的博客,现在重新整理一下自己的思路. 首先在纸上画了一下转移图: 1 3 4号盒子是不能够再转移卡片到其他盒子中去了的,其他盒子中的卡片经过若干步的转移最终也一定会转移到1 3 4号盒子中 ...

  5. hdu 3389 Game 博弈论

    思路: 其本质为阶梯博弈; 阶梯博弈:博弈在一列阶梯上进行,每个阶梯上放着自然数个点,两个人进行阶梯博弈...     每一步则是将一个集体上的若干个点( >=1 )移到前面去,最后没有点可以移 ...

  6. Game HDU - 3389 (博弈论)

    Bob and Alice are playing a new game. There are n boxes which have been numbered from 1 to n. Each b ...

  7. hdu 3389 阶梯博弈

    题意:1-N带编号的盒子,当编号满足A>B && A非空 && (A + B) % 3 == 0 && (A + B) % 2 == 1则可以从A ...

  8. HDU 3389 Game(博弈)

    Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. HDU 3389 Game (阶梯博弈)

    Game Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status D ...

随机推荐

  1. U32670 小凯的数字 数学

    这是洛谷一个比赛中的一道题,和去年NOIP D1T1挺像.我看了一眼之后想“这不是小学奥数吗?求一个数字和就好了呀”...然后,60,剩下T了,gg. 只好看正解,但是一脸懵逼???然后看了证明,c* ...

  2. C++_homework_EraseComment

    顾名思义就是删除程序中的注释,不清楚fsm的机制,完全是自己的思路做. 开头先读取一个字符确定是否到文件结尾,如果读取成功,是换行的话就换行,并继续读取,不是的话,用putback放回缓冲区,并整行读 ...

  3. Genuitec

  4. git强制放弃本地更改

    git fetch --allgit reset --hard origin/master origin是服务器上的本地仓库master是分支

  5. 机器人走迷宫(dfs)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1590 #include <stdio.h ...

  6. JavaScript学习杂记

    1.DOM层级:document(document) --> doctype,documentElement(html) --> head,body(body). 2.offset, cl ...

  7. python-day3 元组(tuple),列表(list),字典(dict)

    1.元组 tuple 有序数据,元组数据不可更改,若元组中有列表,可更改元组中的列表值里的值 元组中以","分开,若只有一个值就不是元组 包含各种数据类型 索引取值:t(2,0.0 ...

  8. ROS-TF-Time

    前言:如何在特定时间进行转换.让第二只乌龟去第一只乌龟在5秒前的地方. 参考自:http://wiki.ros.org/tf/Tutorials/Time%20travel%20with%20tf%2 ...

  9. A - HQ9+

    Problem description HQ9+ is a joke programming language which has only four one-character instructio ...

  10. windbg将调试信息保存到文本文件

    在跟踪一些出现频率较低的问题时,有时候需要长时间调试,但是在在输出信息太多时可能前面的日志会被清空,为避免这种情况,可以将输出日志记录到文本文件以备查看. 1. 可以在启动时直接用带 -logo的命令 ...