Alice and Bob

题意:

两人博弈,每次一个人从一堆中拿k个,同时从另一堆拿k * s(s>=0)个,问谁先不能拿
10000组数据,N<=5000

题解:

(x,y)表示第一堆石头数量为x,第二堆为y
如果(x,y)是必败状态,那么通过取走石头一次直接形成(x,y)的(x1,y1)必然不是必败状态

如果(x,y)不是必败状态,那(x1,y1)就不一定了
可以通过反证去理解
指向必败状态的是必胜状态,必胜状态可以指向必败,也可以指向必胜。必败状态无法到必败状态

综上:我们只需要关注一个点是否可以由必败点得到,如果可以,该点不是必败点,否则是必败点

此时复杂度为O(n4),但是要知道一个结论:对于一个的i只存在至多一种j后手能够获胜
证明如下:
若存在(i,q)(i,p)(p>q)满足后手胜,那么Alice只需将(i,p)->(i,q)即可获胜,不满足后手胜的条件。
这样复杂度就大约在O(n3)

代码:

#include<iostream>
#include<stdio.h>
using namespace std;
bool f[5001][5001];
int main()
{    for(int i=0;i<=5000;i++)//自小到大枚举i,jfor(int j=0;j<=5000;j++){if(f[i][j]==0)//对于每种必败态进行拓展{for(int k=1;k+i<=5000;k++)for(int s=0;s*k+j<=5000;s++)f[i+k][j+s*k]=1;for(int k=1;k+j<=5000;k++)for(int s=0;s*k+i<=5000;s++)f[i+s*k][j+k]=1;}}int t,n,m;cin>>t;while(t--){scanf("%d%d",&n,&m);if(f[n][m]==0){puts("Bob");}else puts("Alice");}return 0;
}

Alice and Bob相关推荐

  1. Sicily1798. Alice and Bob[策略问题]

    [原题描述] Description Bob is very famous because he likes to play games. Today he puts a chessboard in ...

  2. SDUT2608(Alice and Bob)

    题目描述 Alice and Bob like playing games very much.Today, they introduce a new game. There is a polynom ...

  3. NYOJ 1053 Alice and Bob (N)

    Alice and Bob (N) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 也不知道是谁规定的,Alice 和 Bob总是有一堆做不完的事,和一堆奇葩想法,而且重 ...

  4. NYOJ练习题 又见Alice and Bob

    又见Alice and Bob 时间限制:1000 ms  |  内存限制:65535 KB 描述 集训生活如此乏味,于是Alice和Bob发明了一个新游戏.规则如下:首先,他们得到一个集合包含n个特 ...

  5. 牛客 - Alice and Bob(尺取+二分)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,和一个数字 kkk.现在给出 mmm 次询问,每次查询需要回答区间 [l,r][l,r][l,r] 内有多少个子区间,满足区间内不同的数字 ...

  6. 2021牛客暑期多校训练营1 A.Alice and Bob 博弈 SG函数

    传送门 文章目录 题意: 思路: 题意: 有两堆石子,两个人每次可以进行如下操作:从某一堆狮子中拿出x(x>0)x(x>0)x(x>0)个,从另一堆石子中拿出s∗x(s>=0) ...

  7. 【CodeForces - 347C 】Alice and Bob (思维,数学,等差数列)

    题干: It is so boring in the summer holiday, isn't it? So Alice and Bob have invented a new game to pl ...

  8. 【UVA - 10891 Game of Sum 】【HRBUST - 1622】 Alice and Bob (区间dp,博弈问题)

    题干: 有一个长度为N的整数序列,Alice和Bob轮流取数,Alice先取.每次玩家只能从左端或者右端 取一个或多个数,但不能两端都取.所有数都被取走后游戏结束,然后统计每个人取走的所有数之和, 作 ...

  9. PKI世界中两个知名的情侣 Alice和Bob

    PKI世界中两个知名的情侣 Alice和Bob 2007-08-07 15:46 Alice .. ¬ 写完信后把信件内容转变成MD ­ 用她的私钥给MD加密 ® 用随机产生的对话密钥给信件加密 ¯ ...

最新文章

  1. Win7系统中Microsoft Office Word2003已停止工作
  2. 前端学习(497):布局之居中布局
  3. 对Table_locks_immediate值的理解
  4. 最新手机号段 归属地数据库(20191210,共439265条,包括最新的号段)
  5. Tomcat内存溢出(OutOfMemoryError)
  6. Error: Some file crunching failed
  7. 6.3 交通工具类
  8. int x=3,y=2;则表达式x+=x*=y+8的值为(60)
  9. 又一神作。Alibaba“M8级”架构师总结微服务与事件驱动架构启蒙手册
  10. 2020年终总结——走在代码公益的路上
  11. 百度数据可视化Sugar BI 数据自动补全
  12. 在现有oracle服务器上新建一个oracle实例
  13. Wayfarer的《叩开C#之门》系列(图文并茂,推荐新手认真看一看)
  14. Linux虚拟机与主机共享文档
  15. EXE4J生成的exe文件自动请求管理员权限(UAC)
  16. java取昨天日期_Java 获取昨天日期方法总结
  17. 结语【To be continued】
  18. SQL Server 数据分区管理
  19. 23-末2菜菜的计算机保研之路(pku cs\rw、zju cs、fdu cs、ustc)
  20. 客运行业发展现状分析

热门文章

  1. 钟南山团队在患者粪便中检出新冠活病毒,国家卫健委回应!专家:做好这事很重要...
  2. seata xid是什么_使用Seata彻底解决Spring Cloud中的分布式事务问题!
  3. oracle表存储表空间,Oracle的存储信息-表空间信息记录
  4. 面试被问到Java 静态代理/动态代理?不用怕,这样子就可以!!
  5. 七0二所与江南计算机研究所,江南大学:一所被低估的“211”大学,2个A+学科,丝毫不输985...
  6. java 推送数据给js,Node.js实现数据推送
  7. java 1.8 vm_HotSpot虚拟机在java 1.8中的新实现
  8. 关于计算机英语阅读,一篇摘选的关于计算机的英语阅读材料,对大家的英语也许会有提高!...
  9. linux安装rz命令_Linux 安装dep安装包命令
  10. python 创建目录_第二天:Python中目录及文件操作