Description

Alice和Bob正在玩一个非常无聊的游戏以打发时间。游戏是这样的。初始的时候,有n个箱子和m个物品。箱子、物
品都是不同的。因此有nm种方法把这些物品放到箱子里。两个人轮流操作。每一次操作,游戏者有两种选择:添加
一个新的箱子或者添加一个新的物品。不可以不操作。如果某人操作以后,将物品放入箱子的方法数大于或等于c
,那么这个人就输了。保证最初c > nm。对于一组给定的n和m,假设游戏者足够聪明,请问是先手必胜,还是后手
必胜,还是平局(即无人能获胜)呢?注意,输入文件包含多组测试数据。

Input

第一行包含一个整数T,表示有T组测试数据。
接下来T行,每行包含三个整数n,m,c。
1≤n < c,1≤m≤30,2≤c≤109,1≤T≤5

Output

输出T行,依次表示每组测试数据的答案。若先手必胜输出"Alice",后手必胜输出"Bob",平局输出"Draw"。
有效状态数非常少,可以记忆化搜索或dp
若n=1,m足够大使2^m>=c,则游戏不会结束,故为平局
若m=1,n足够大使n^2>=c,则可以直接判定胜负
一个状态为必胜态,当且仅当存在一个后继状态为必败态,一个状态为必败态,当且仅当没有后继或所有后继为必胜态,否则为平局状态
#include<cstdio>
#include<map>
#include<algorithm>
typedef long long i64;
int T,n,m,c;
std::map<std::pair<int,int>,int>mp;
bool chk(i64 a,int b){
i64 v=;
for(;b&&v<c;b>>=){
if(b&)v=v*a;
a=a*a;
}
return v<c;
}
int calc(int a,int b){
if(!chk(a,b))return ;
if(a==&&(1ll<<b)>=c)return ;
if(b==&&i64(a)*a>=c)return ((c-a+&)<<);
std::pair<int,int>st=std::make_pair(a,b);
if(mp.find(st)!=mp.end())return mp[st];
int x=calc(a+,b),y=calc(a,b+);
if(!x||!y)return mp[st]=;
if(x==&&y==)return mp[st]=;
return mp[st]=;
}
int main(){
for(scanf("%d",&T);T;--T){
scanf("%d%d%d",&n,&m,&c);
mp.clear();
int w=calc(n,m);
puts(w==?"Bob":w==?"Draw":"Alice");
}
return ;
}

bzoj4702: 装箱游戏的更多相关文章

  1. 一本通提高篇——斜率优化DP

    斜率优化DP:DP的一种优化形式,主要用于优化如下形式的DP f[i]=f[j]+x[i]*x[j]+... 学习可以参考下面的博客: https://www.cnblogs.com/Xing-Lin ...

  2. 5.30 NOI 模拟

    $5.30\ NOI $模拟 高三大哥最后一次模拟考了,祝他们好运 \(T1\)装箱游戏 显然可以将四种字母之间的空缺当做状态枚举 那么这道题就很显然了 #include<bits/stdc++ ...

  3. 游戏开发设计模式之对象池模式(unity3d 示例实现)

    前篇:游戏开发设计模式之命令模式(unity3d 示例实现) 博主才学尚浅,难免会有错误,尤其是设计模式这种极富禅意且需要大量经验的东西,如果哪里书写错误或有遗漏,还请各位前辈指正. 原理:从一个固定 ...

  4. Unity3D游戏GC优化总结---protobuf-net无GC版本优化实践

    protobuf-net优化效果图 protobuf-net是Unity3D游戏开发中被广泛使用的Google Protocol Buffer库的c#版本,之所以c#版本被广泛使用,是因为c++版本的 ...

  5. c#游戏进程杀手

    我认为写博客还是比较重要的,特别是短时间写出一个含有新知识点的软件.这样总结下这次编程经验和再捋顺一下这次编程思路.首先来谈谈为什么想做这个小程序,一是感觉自己太贪玩想控制一下,二是也锻炼下自己的编程 ...

  6. C#效率优化(3)-- 使用foreach时避免装箱

    Introduction: ※本文不是在描述旧版本Unity中mono编译器导致的foreach语句额外装箱错误 博主是一名Unity 3D游戏开发者,游戏使用C#+lua开发,最近在优化C#代码时, ...

  7. Unity优化方向——优化Unity游戏中的垃圾回收(译)

    介绍 当我们的游戏运行时,它使用内存来存储数据.当不再需要该数据时,存储该数据的内存将被释放,以便可以重用.垃圾是用来存储数据但不再使用的内存的术语.垃圾回收是该内存再次可用以进行重用的进程的名称. ...

  8. Unity3D游戏开发之C#编程中常见数据结构的比较

    一.前言 Unity3D是如今最火爆的游戏开发引擎,它可以让我们能轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型的互动内容.它支持2D/3D游戏开发,据不完全统计,目前国内80%的手机游戏都 ...

  9. unity,C#,游戏面试笔试真题

    最开始的两家公司笔试面试题目 一家公司是学校聘请研究教育方面VR课件的公司,面试没几天,就收到了面试通过的消息,后面因为通过了另一家游戏公司而拒绝了. 另一家公司是一家游戏外企,在春熙路,当时笔试还可 ...

随机推荐

  1. (理论篇)温故而知新_PHP入门基础教程

    简单的回顾一下基础知识 1.嵌入方法: 类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定. 2.引用文件: 引用文件的方法有两种:req ...

  2. ASP连接access 数据库的增删改查 - imsoft.cnblogs

    假设数据库文件名叫data.mdb里面有2个表:1.admin2.news假设admin是保存用户名和密码,里面有字段:UserName,PassWord.假设我们要在判断一个用户名叫name,密码是 ...

  3. SAP 默认的连接端口

    3708.3908.4008.32<instance number> 如instance number是00的话,就是3200,这是给 disp+working process 用的. 3 ...

  4. ZOJ 1216 Deck

    原题链接 题目大意:1/2+1/4+1/6+…1/n 解法:直接累加即可. 参考代码: #include<stdio.h> int main(){ printf("# Cards ...

  5. JS网址正则验证

    function IsURL(str_url){ var strRegex = "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9 ...

  6. alias sample method——运行时间复杂度为O(1)的抽样算法

    根据离散离散概率分布抽样是一个常见的问题.这篇文章将介绍运行时间复杂度为O(1)的 alias method 抽样算法思想. 下面举例说明: 比如 a,b,c,d 的概率分别为 0.1,0.2,0.3 ...

  7. activiti 任务节点 处理人设置【转】

    转自http://blog.csdn.net/qq_30739519/article/details/51225067 1.1.1. 前言 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自 ...

  8. JavaWeb学习记录(十三)——商城购物之添加订单的数据库级联操作

    一.方法实现 private JdbcTemplate jdbcTemplate = new JdbcTemplate(DBConn.getDataSource()); @SuppressWarnin ...

  9. phpmyadmin导入导出大数据文件的办法

    在phpmyadmin的使用中,经常需要进行导入导出数据库的操作. 但是在导入导出大型数据库文件的时候经常会只是部分导出或者部分导入. 或者是导入导出不成功. 原因就是服务器和php.mysql限制了 ...

  10. activity状态的保存和保持(onRetainNonConfigurationInstance和getLastNonConfigurationInstanc

    本文转载于:http://chengbs.iteye.com/blog/1156167 比较onsaveinstancestate() 与 onretainnonconfigurationinstan ...