Acdream1311_Apple
无聊的时候看到上一次acdream群赛的一个题目,中间居然是有alice和bob的博弈题目,于是就去做了。
给n,m,两人轮流操作,每次操作可以使n+1,或者m+1,谁操作后满足nm>=A,那么此人lose。
简单的博弈知识即可解决问题,如果当前状态的所有后继状态都是必胜态,那么该状态就是必败态;如果当前状态的后继状态中有一个是必败状态,那么这个状态就是必胜状态。
记忆化搜索。状态数其实不多sqrt(N)*log(N),其中N=109。
不过要注意几种特殊情况,一开始n,m的幂就大于A的时候,不需要判断后继状态,直接是lose。如果n=1,而m=log2A,那么会是draw,因为谁加了n谁就输了,两人都不会动n。如果m=1,而n>=sqrt(A),那么游戏只能沿着n增加的方向走动,直接判断步数只差的奇偶即可得出答案。剩下的问题就需要通过一些编程技巧来解决了。。。。
搜索的时候也是有一定技巧可言的。
召唤代码君:
/*
* this code is made by 092000
* Problem: 1131
* Verdict: Accepted
* Submission Date: 2014-07-18 19:32:01
* Time: 0MS
* Memory: 10268KB
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std; int f[][],tag[][],TAG=;
int n,m,A; bool large(int x,int y)
{
int tot=;
while (y)
{
if (y&)
{
if (tot>A/x) return true;
else tot*=x;
}
y>>=;
if (y && x>A/x) return true;
else x*=x;
}
return tot==A;
} int dfs(int x,int y)//power(x,y)
{
if (tag[x][y]==TAG) return f[x][y];
tag[x][y]=TAG;
if (large(x,y)) return f[x][y]=-;//power
if (x== && large(x+,y)) return f[x][y]=;
if (y== && large(x,y+))
{
int tmp=A-x;
if (tmp&) return f[x][y]=-;
else return f[x][y]=;
}
f[x][y]=-;
int tmp1=dfs(x+,y),tmp2=dfs(x,y+);
if (tmp1>-) f[x][y]=max(f[x][y],-tmp1);
if (tmp2>-) f[x][y]=max(f[x][y],-tmp2);
return f[x][y];
} int main()
{
for (;scanf("%d%d%d",&n,&m,&A)!=EOF;TAG++)
{
if (dfs(n,m)==) puts("draw");
else if (dfs(n,m)>) puts("win");
else puts("lose");
}
}
Acdream1311_Apple的更多相关文章
随机推荐
- python数据分析处理库-Pandas
1.读取数据 import pandas food_info = pandas.read_csv("food_info.csv") print(type(food_info)) # ...
- 年薪30W的软件测试“老司机”工作经验
这几天,新入职的小MM提议“老司机”们把自己这些年的软件测试工作经验跟大家分享一下,让新同学学习学习,利用空闲时间我整理了一些,可能不全,勉强看看,这也算是对自己这些年的工作总结. 测试阶段划分 1. ...
- UNITY_委托和事件
UNITY_委托和事件 参考资料: Unity3D脚本编程-使用C#语言开发跨平台游戏-陈嘉栋 观察者模式 主题(Subject)管理某些数据,当主题的数据发生改变时,会通知已经注册(Register ...
- 前端基础css
CSS主要学习的是选择器和样式属性. 导入css的方式:行内样式,内部样式,外部样式(推荐使用) 行内样式:在标记的style属性中设定CSS样式 <p style="color: g ...
- Gitlab CI-1.Gitlab部署
参考文档: GitLab Documentation:https://docs.gitlab.com/ce/ Installation and Configuration using omnibus ...
- git ssh密钥配置添加
1. 初次安装git配置用户名和邮箱 $ git config --global user.name "xxx" $ git config --global user.email ...
- 方正 ignb路由器设置备份(自用笔记)
192.168.15.96255.255.255.0192.168.15.1219.232.46.61219.141.136.10
- NIO基本概念
1. IO和NIO的区别 IO 面向流(stream oriented) 阻塞(blocking io) 无 NIO 面向缓冲区(buffer orie ...
- 精通Python爬虫-03-狩猎大师
声明: 本系列文章原创于慕课网,作者秋名山车神,任何人不得以任何形式在不经作者允许的情况下,进行任何形式的印刷以及销售,转载需注明出处及此声明. 本系列文章更新至少每周一更,将涉及Python爬虫基础 ...
- CS小分队第二阶段冲刺站立会议(6月4日)
昨日成果:昨天一直在对主界面进行修改,遇到问题没有进展 遇到的问题:我代码写的不够缜密,各按钮信息添加的删除的时候总是有重名或者覆盖现象,需要有一次大的检查 今日计划:冲刺已经结束,项目的难度超过了预 ...