Misere Nim (LightOJ - 1253,最后取石子输的 Nim 博弈)_misere-nim策略_The___Flash的博客-程序员秘密

技术标签: # 博弈  -------------基本算法-------------  

一.题目链接:

LightOJ-1253

二.题目大意:

规则和 Nim 博弈相似,只不过规定最后一名取石子的人输.

三.分析:

当所有石子堆均为 1 时,只需看 n 的奇偶性.

当 n 为奇数时,先手必输.

否则,后手必输.

在其余状态中,与 Nim 博弈一样

因为只是两名玩家的选择策略产生了变化

使自己拿最后一个 -> 使别人拿最后一个

四.代码实现:

#include <set>
#include <map>
#include <ctime>
#include <queue>
#include <cmath>
#include <stack>
#include <vector>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define eps 1e-6
#define pi acos(-1.0)
#define ll long long int
using namespace std;

int main()
{
    int T;
    scanf("%d", &T);
    for(int ca = 1; ca <= T; ++ca)
    {
        int n;
        scanf("%d", &n);
        int ans = 0;
        bool flag = 1;
        for(int i = 0; i < n; ++i)
        {
            int data;
            scanf("%d", &data);
            if(data != 1)
                flag = 0;
            ans ^= data;
        }
        printf("Case %d: ", ca);
        if(flag)
        {
            if(n & 1)
                printf("Bob\n");
            else
                printf("Alice\n");
            continue;
        }
        if(ans)
            printf("Alice\n");
        else
            printf("Bob\n");
    }
    return 0;
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/The___Flash/article/details/89363367

智能推荐

【Unity】解决AR模式下平移方向异常的问题(手势,方向,平移,坐标系)_梅思源的博客-程序员秘密

首先分析问题:在标准的3D游戏场景中,由于相机坐标系与世界坐标系始终保持一致。所以我们可以简单的采用,***屏幕坐标系XY =》 世界坐标系XZ***的方式来进行游戏对象的平移。但是在AR模式下,由于相机是跟随手持设备的移动与方向进行变化的,在这种情况下,相机坐标系与世界坐标系不再保持相对一致,所以我们需要进行坐标系转换。但根据这里有一个更简单的方法获取手指点 相机点 的两个位置, 利用直线方程直接求出正确的点Vector3 GetPositonOnPlane(Vector3 point0, V

用PyTorch写的python脚本,程序执行结束后,不自动终止_pytorch 运行结束后不退出_f(x)-blog的博客-程序员秘密

问题描述:用 PyTorch 写的一个python 脚本,脚本内容执行结束后,程序不能正常结束,按Ctrl + C也没用!!(虽然这个bug似乎对实验结果没什么影响,但是,很影响心情有没有,我居然不能控制自己写的代码……)究竟是哪里出了问题??经过筛查,发现问题是下面这句代码引起的:loss.backward()如何解决?直接删了肯定不行,模型还跑不跑了,一通搜索之后,我似乎找到了解决办法 :网友解答附录:看完上面那个链接内容之后,你大概率会笑喷,或许这就是作为程序员的

LeetCode之电话号码的组合_不穿西服的程序员的博客-程序员秘密

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:&quot;23&quot;输出:[&quot;ad&quot;, &quot;ae&quot;, &quot;af&quot;, &quot;bd&quot;, &quot;be&quot;, &quot;bf&quot;, &quot;cd&quot;, &quot;ce&quot;, &quot;cf&quot;].解题方案:

WPF简单导航框架(Window与Page互相调用)_wpf window page_ludewig的博客-程序员秘密

使用Frame的通用导航框架,可以从Page页中调用MainWindow中的公共方法和公共变量。

Android Retrofit 2.0(二)使用教程OkHttp3 + Gson + RxJava_艾阳Blog的博客-程序员秘密

 系列文章推荐:Android 必须知道的网络请求框架库,你不可错过的框架介绍篇Android Retrofit 2.0(一)初次见面请多多关照Android Retrofit 2.0(三)从源码分析原理  相关资料   Github:https://github.com/square/retrofit 官网文档:http://square.gith...

随便推点

数字电路之Verilog红绿灯设计_No_Lies的博客-程序员秘密

数字电路之Verilog红绿灯设计一、题目要求二、分析题目三、开始设计四、结果分析五、最后的话写在前面:以下仿真实验设计应用的是Xilinx Vivado。一、题目要求&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;题目要求应用Verilog语言设计一个红绿灯,规则为红灯亮15秒,然后黄灯亮3秒,然后绿灯亮12秒,然后红灯亮15秒,以这个规律往复下去,...

VirtualPlanetBuilder编译出错处理_luoming1994的博客-程序员秘密

IntelliSense: namespace "osgDB" 没有成员 "BEGIN_BRACKET" IntelliSense: namespace "osgDB" 没有成员 "END_BRACKET"“BEGIN_BRACKET”: 不是“osgDB”的成员“BEGIN_BRACKET”: 未声明的标识符“END_BRACKET”: 不是“osgDB”的成员“

ubantu 16.04 编译报错 clang: error: linker command failed with exit code_QuincyJiang的博客-程序员秘密

最近在ubantu16.04的服务器上编译5.1源码出错 尝试了几种解决办法 首先在根目录 中找到 /art/build/Android.common_build.mk,[java] view plain copy"font-size:18px;"># Host.  ART_HOST_CLANG

07-SNAP处理Sentinel-1 IW GRD数据_超级禾欠水的博客-程序员秘密

热噪声去除为何会有热噪声?热噪声是SAR卫星系统自带的噪声,SAR是主动成像的,需要发射机发出电磁波信号(能量),你可以想像一下,SAR天线从发出电磁波到接收电磁波所经历的距离(sentinel-1距地面高度700km),由于存在波的球面扩散效应,能量呈距离平方反比衰减,所以,你可以想象一下发射机需要多大的功率,发出多强的能量,考虑到这点,你会想到SAR卫星装置内部的热量(热损耗)不可以忽视的。...

带百度地图apk 签名打包后 地图key验证失败_apk签名验证_liu_qiqi的博客-程序员秘密

百度地图开发调试的应用程序正常,打包后显示授权key失败这是由于调试生成的应用程序使用的是eclipse默认的SHA1的值我们需要使用自己创建的数字签名来解决这一问题。以下是解决方案设置android 环境变量如图所示 打开Cmd输入以下指令1:cd C:\Program Files\Java\jdk1.7.0_13\bin2

win10 剪贴板 拒绝访问 Cannot open clipboard_weixin_34335458的博客-程序员秘密

win10Cannot open clipboard:拒绝访问。 在RAD IDE代码编辑器中,双击选中的文本,会自动复制到剪贴板里,导致的问题是从 A处复制文本到B处双击选中,粘贴的时候,是B文本,并没有把A粘贴过来,而是粘贴了B文本。。。。 频繁出现,有人遇到吗,有人解决了吗?...

推荐文章

热门文章

相关标签