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的更多相关文章
随机推荐
- Struts 2 访问Servlet API的方式
与Servlet API解耦的访问方式 与Servlet API耦合的访问方式 (tips:耦合既依赖) 1. 与Servlet API解耦的访问方式 2. 与Servlet API耦合 ...
- 常见面试算法题JS实现-仅用递归函数和栈操作逆序一个栈
前言: 因为JAVA和JS语言特性的不同,有些东西在JAVA中可能需要一些技巧和手段才能实现的复杂程序,但是在JS中可能就是天然存在的,所以这套书里面的题目不会全部用JS去实现一遍,因为可能JS的实现 ...
- DMS路由表
DMS路由表: route add -p 53.90.146.0 mask 255.255.255.0 10.77.35.249 ================================= ...
- lua编程之协程介绍
一,lua协程简介 协程(coroutine),意思就是协作的例程,最早由Melvin Conway在1963年提出并实现.跟主流程序语言中的线程不一样,线程属于侵入式组件,线程实现的系统称之为抢占式 ...
- nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现
nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...
- adb server version (31) doesn't match this client (39) 解决方案
adb server version (31) doesn't match this client (39) 问题的解决方案, 在cmd中输入adb nodaemon server -a后解决了, 记 ...
- Netty源码分析第2章(NioEventLoop)---->第6节: 执行select操作
Netty源码分析第二章: NioEventLoop 第六节: 执行select操作 分析完了selector的创建和优化的过程, 这一小节分析select相关操作 跟到跟到select操作的入口 ...
- AloneQIan---第一次作业
小学生的噩梦 一.估计与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 720 • Estim ...
- java学习de路线建议
我想谈一谈我的一些关于网页学习的小感悟吧.之所以是写这个的原因完全是想告诉现在还处在网页学习的初始阶段的同学一些我学习走过的弯路,但我说的也仅是我个人的理解,毕竟我只能是JavaWeb开发的新手,所以 ...
- BeanUtils解决日期问题
ConvertUtils.register(new DateLocaleConverter(), Date.class); BeanUtils.populate(user, request.getPa ...