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. PAT (Basic Level) Practise:1007. 素数对猜想

    [题目链接] 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素数”. ...

  2. 7-zip的压缩的时候排除某目录

    安装暂且不说了. 看一下帮助. [root@localhost Server]# 7z -Zip [] - Igor Pavlov -- p7zip Version ,Utf16=on,HugeFil ...

  3. 238. Product of Array Except Self

    Given an array of n integers where n > 1, nums, return an array output such that output[i] is equ ...

  4. keil uvision看厌了么?试试Sublime Text吧!

    之前用 Sublime Text(以下简称 ST )配置了 C/C++ 开发环境,感觉相当不错,作为编辑器的 ST,编辑代码的功能当然是相当棒的,美中不足的是目前只能编译单个文件,但是用来做些小练习也 ...

  5. tyvj1011 - 传纸条 ——DP

    题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1011 状态转移方程: f[k,x1,x2] = max(f[k-1,x1,x2],f[k-1,x1-1, ...

  6. leetcode 109 Convert Sorted List to Binary Search Tree ----- java

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  7. php常用配置(php.ini)

    查看php配置文件的位置 # /usr/local/php/bin/php -i | head php配置文件中的注释是用;号 1.disable_functions(php要禁用的函数) phpin ...

  8. Codeforces Round #140 (Div. 2)

    A. Where do I Turn? 叉积判断. B. Effective Approach 记录位置. C. Flying Saucer Segments 假设有\(n\)个人,那么\(1\)要移 ...

  9. php随笔杂记(一)

    1.在function updatepwd($postData=array())   如果参数是一个数组, 在使用时,如果给他赋值则只返回数组名$postData即可  ,如果里面已有值 ,这返回的可 ...

  10. 关于VC、MFC和ACCESS的一些使用问题

    最近在用VC.MFC和ACCESS开发一些小工具. 由于操作系统和开发工具以及数据库版本都升级了,和当年有一些区别了(我这是有多老了--fuck--),遇到一些问题,贴在下面:   1,用什么连接AC ...