题目大意:整理为,现在有两个数字n和m,两人每轮可以使得n++或者m++(有且必须选其一),第一个让n^m>=A的人为输。问第一个人是必输、必赢或平局。

思路:先用的sg求,发现平局没法表示。最后直接用0表示必输点、1表示必赢点、2表示平局。

问题的关键在于终止条件的判断。显然当 n>=2 && m>=2时候 子状态是有限且很少的,可以暴力询问所有子状态。

当n==1时,m其实可以取无限大。但是,发现当 (n+1)^m>=A时候,子状态只有一个,而且,显然这种状态为平局。

当m==1时,n<=A,状态有限但是太多。但是当n^(m+1)>=A,子状态只有一个,可以直接通过A-n的奇偶性判断此点状态。

特别的,当一开始n^m>=A时候,是先手必败。

//#pragma comment(linker, "/STACK:102400000,102400000")
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<cmath>
#include<cctype>
#include<string>
#include<algorithm>
#include<iostream>
#include<ctime>
#include<map>
#include<set>
using namespace std;
#define MP(x,y) make_pair((x),(y))
#define PB(x) push_back(x)
typedef long long LL;
//typedef unsigned __int64 ULL;
/* ****************** */
const int INF=100011122;
const double INFF=1e100;
const double eps=1e-8;
const LL mod=20120427;
const int NN=10;
const int MM=1000010;
/* ****************** */map<pair<int,int>,int>Mmap;
int cnt;
LL A;
int sg[1000000];
//0:lose
//1:win
//2:ping
pair<int,int>temp;// n^m >= A
bool fun(int n,int m)
{if(n==1){if(1>=A)return true;return false;}LL x=1;while(m--){x=x*n;if(x>=A)return true;}return false;
}int solve(int n,int m)
{temp=MP(n,m);int id;if(Mmap.count(temp)==0){id=++cnt;sg[id]=-1;Mmap[temp]=id;}elseid=Mmap[temp];if(sg[id]!=-1)return sg[id];if(fun(n,m)){sg[id]=1;return sg[id];}if(n==1 && fun(n+1,m)){sg[id]=2;return sg[id];}if(m==1 && fun(n,m+1)){sg[id]=1-( (A-n)%2 );return sg[id];}int x1=solve(n+1,m);int x2=solve(n,m+1);if(x1==0 || x2==0)sg[id]=1;else{if(x1==1 && x2==1)sg[id]=0;elsesg[id]=2;}return sg[id];
}int main()
{int x,z;int n,m;while(scanf("%d%d%d",&n,&m,&z)!=EOF){Mmap.clear();cnt=0;A=z;if(fun(n,m)){puts("lose");continue;}x=solve(n,m);//  printf("cnt==%d\n",cnt);if(x==0)puts("lose");else if(x==1)puts("win");elseputs("draw");}return 0;
}

ACdream群OJ 1131 Apple 博弈相关推荐

  1. 哈理工OJ 2111 Apple(简单模拟)

    题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2111 Apple Tim ...

  2. ACdream群赛(4)总结

    A.Convex 计算几何:算各个三角形面积再相加 B.Double Kings 图论:先用无向图保存,然后边建树边计算划分后的某一边的数量,最后找出相差最小的那种方式 E.The Game abou ...

  3. java开发爱恩斯坦棋,爱恩斯坦棋计算机博弈系统的研究与实现

    爱恩斯坦棋计算机博弈系统的研究与实现 [摘要]:计算机博弈,也称机器博弈,是一个极具挑战与发展前景的计算机研究领域,其作为人工智能领域一个极其重要的课题,素有人工智能领域"果蝇"之 ...

  4. 计算机五子棋博弈发展历史,五子棋计算机博弈系统的研究与设计

    五子棋计算机博弈系统的研究与设计 [摘要]:计算机博弈是人工智能领域最具挑战的研究分支之一.它是研究人脑思维的载体,是计算机技术与博弈论相结合的产物,是人工智能领域的"试验田",被 ...

  5. 计算机爱恩斯坦棋游戏,爱恩斯坦棋计算机博弈系统的研究与实现

    爱恩斯坦棋计算机博弈系统的研究与实现 [摘要]:计算机博弈,也称机器博弈,是一个极具挑战与发展前景的计算机研究领域,其作为人工智能领域一个极其重要的课题,素有人工智能领域"果蝇"之 ...

  6. 演化博弈理论与应用研究综述[转]

    原文地址:http://blog.sina.com.cn/s/blog_49d15689010009oq.html 演化博弈理论与应用研究综述 王文宾,达庆利,陈伟达 (东南大学经济管理学院,南京,2 ...

  7. 上海邀请赛——魔都之行

    11日,怀着激动的心情准备前往魔都(其实魔都在10号的时候都不知道是上海,还是在ACDream群里听人提到然后上网查的...孤陋寡闻了),13:21的车,其他人都11:40集合去了,我因为要见爸爸,所 ...

  8. Mac OS X 背后的故事(二)——Linus Torvalds的短视

    文/王越 <Mac OS X背后的故事>系列文章将为大家介绍Mac OS X的发行版本.技术历史.相关人物等内容.本文是系列连载的第二篇,主要的故事来源是Linus Torvalds的自传 ...

  9. 第二期预告|中国工程院院刊:信息与电子工程领域青年学术前沿论坛

    为了促进信息领域学术交叉研究,构筑学术思想交流高地,在中国工程院信息与电子工程学部指导下,中国工程院院刊<Engineering>.<Frontiers of Information ...

最新文章

  1. linux命令gcc常用选项
  2. msfvenom生成木马和内网穿透
  3. 第三次学JAVA再学不好就吃翔(part33)--final关键字
  4. 使用 selector 从 SAP Spartacus state 里读取 Cart 数据
  5. ArcGIS Server SOE开发之奇怪异常:
  6. Spark源码分析之Checkpoint机制
  7. 火币生态链项目SuperNova与Poly Network达成战略合作
  8. JavaScript 闭包(个人理解)
  9. CF986F Oppa Funcan Style Remastered
  10. 目标检测---SSD
  11. Spring源码之bean的实例化createBeanInstance方法解读
  12. IEC 60730-1-2020.最新原版,可复制文字 : 家用自己设备自动电气控制 - 第 1 部分:一般要求
  13. Flash Programer 给CC2530下载Hex文件 error解决办法 汇总
  14. IPsec简单实验-IKE协商
  15. android前置录像,Android Camera2video使用前置摄像头(Android Camera2video use front camera)
  16. vue中使用vue-pdf插件显示pdf
  17. win10忘记redis密码
  18. 北理工计算机学院隋秀峰,吴俊敏(计算机科学与技术学院)老师 - 中国科学技术大学 - 院校大全...
  19. 上传文件到GPU服务器,上传文件到GPU服务器并运行文件
  20. 转战物联网·基础篇01-物联网之我见

热门文章

  1. html商品图片放大插件,PS图片无损放大/图像处理插件-ON1 Resize 2018.5
  2. 如何把html的按钮给变透明背景,css如何实现按钮透明
  3. Virbox 编译器,支持全平台全架构的源代码加密
  4. 使用 LJ1-01 夜间灯光图像检测县域经济发展:与 NPP-VIIRS 数据的比较
  5. 软件测试最全面试题及答案整理(2022最新版)
  6. 用短信群发软件去维护客户赢得客户信赖
  7. 计算机 保研 直博,保研、直博、硕博连读,它们之间有什么联系和区别?
  8. centos里的mysql密码重置
  9. Win10系统通过VMware安装Centos7,部署KVM安装WIN7虚拟机
  10. CSS/SCSS 做一个心跳的动画:keyframe