题目链接:http://lx.lanqiao.cn/problem.page?gpid=T37

题意:中文题诶~

思路:nim博弈

个人感觉这题最难的地方是将题目转换为博弈模型,如果能将之转换为博弈模型的话题目也就迎刃而解啦;

本题的解法是将相邻的两个和尚之间的台阶数目看做一堆石头,那么就变成nim博弈啦,对于和尚数目为奇数的情况,直接将最后一个和尚忽略或者在最后那个和尚后面再加一个和尚即可,后者相当于加了一堆数目为0的石头,和前者没什么区别;

本题和一般nim博弈的不同之处是本题中石头的数目是可以增加的,其实就是将后面那个和尚往后移啦;如果直接按照博弈思路去求那个bi'的话得到的解可能不是最小的(在本题中最后一组数据会wa)。要得到最小解的话就需要我们枚举每一个和尚并分别判断石头增加和减少的情况啦。。

直接求bi'的代码:

 #include <iostream>
#include <stdio.h>
#define MAXN 110
using namespace std; int a[MAXN], b[MAXN]; int main(void){
char ch;
int pos=;
while(){
scanf("%d%c", &a[pos++], &ch);
if(ch=='\n'){
break;
}
}
if(pos&){
pos--;
}
for(int i=; i<pos; i+=){
b[i>>]=a[i+]-a[i]-;
}
pos>>=;
int ans=;
for(int i=; i<pos; i++){
ans^=b[i];
}
if(!ans){//面对奇异局势,必败
cout << - << endl;
}else{
for(int i=; i<pos; i++){
if((ans^b[i])<b[i]){//找到bi'替换bi使变成奇异局势
int cnt=ans^b[i];
cout << a[i<<] << " " << a[i<<]+(b[i]-cnt) << endl;
break;
}
}
}
return ;
} // 1 4 8 12 16 19 28 33 35 36 40 45 52 66 67 68 69 77 85 99 102 134 155 211 214 216 355 376 400 412
// 134 148

枚举求解的代码:

#include <iostream>
#include <stdio.h>
#define MAXN 110
using namespace std; int a[MAXN], b[MAXN]; int main(void){
char ch;
int pos=;
while(){
scanf("%d%c", &a[pos++], &ch);
if(ch=='\n'){
break;
}
}
if(pos&){
pos--;
}
int len=pos;
for(int i=; i<pos; i+=){
b[i>>]=a[i+]-a[i]-;
}
pos>>=;
int ans=;
for(int i=; i<pos; i++){//面对奇异局势,必败
ans^=b[i];
}
if(!ans){
cout << - << endl;
}else{
for(int i=; i<len; i++){//枚举每一个人移动的情况
for(int j=a[i]+; j<a[i+]; j++){//当前和尚可以向前移动到前一个和尚下面一个台阶
if(i&){//若当前是第偶数个和尚,则相当于当前堆石头数目增加
int cnt=j-a[i-]-;
if(!(ans^cnt^b[i/])){//移动后变成奇异局势
cout << a[i] << " " << j << endl;
return ;
}
}else{//当前是第奇数个和尚,则相当于当前堆石头数目减少
int cnt=a[i+]-j-;
if(!(ans^cnt^b[i/])){//移动后变成奇异局势
cout << a[i] << " " << j << endl;
return ;
}
}
}
}
}
return ;
}

蓝桥杯T37(nim博弈)的更多相关文章

  1. 2016蓝桥杯"取球博弈"问题

    较难,网上有能得出正确结果的代码,但是读了一下,像是拼凑出的结果,逻辑不通,代码和注释不符 参考网上代码写了一版,结构相对清晰,注释比较详细 题目很长: 两个人玩取球的游戏.一共有N个球,每人轮流取球 ...

  2. java实现第七届蓝桥杯取球博弈

    题目9.取球博弈 取球博弈 两个人玩取球的游戏. 一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目. 如果无法继续取球,则游戏结束. 此时,持有奇数个球的一方获胜. 如果两 ...

  3. 取球游戏_nyoj_518(博弈-蓝桥杯原题).java

    取球游戏 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 2   描述 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下 ...

  4. 2012年第三届蓝桥杯C/C++程序设计本科B组省赛 取球博弈

    2012年第三届蓝桥杯C/C++程序设计本科B组省赛 取球博弈 题目描述 **取球博弈 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并 ...

  5. 第九届蓝桥杯国赛+第二天的第11届acm省赛的总结

    第九届蓝桥杯国赛+第二天的第11届acm省赛的总结 25号坐的去北京的火车,10个小时的火车,然后挤了快两个小时的地铁,最终达到了中国矿业大学旁边的订的房间.12个小时很难受,晕车症状有点严重,吃了快 ...

  6. HDU 2509 Nim博弈变形

    1.HDU 2509  2.题意:n堆苹果,两个人轮流,每次从一堆中取连续的多个,至少取一个,最后取光者败. 3.总结:Nim博弈的变形,还是不知道怎么分析,,,,看了大牛的博客. 传送门 首先给出结 ...

  7. HDU 1907 Nim博弈变形

    1.HDU 1907 2.题意:n堆糖,两人轮流,每次从任意一堆中至少取一个,最后取光者输. 3.总结:有点变形的Nim,还是不太明白,盗用一下学长的分析吧 传送门 分析:经典的Nim博弈的一点变形. ...

  8. 2012年 蓝桥杯预赛 java 本科 题目

    2012年 蓝桥杯预赛 java 本科 考生须知: l  考试时间为4小时. l  参赛选手切勿修改机器自动生成的[考生文件夹]的名称或删除任何自动生成的文件或目录,否则会干扰考试系统正确采集您的解答 ...

  9. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

随机推荐

  1. GstAppSrc简介

    Description The appsrc element can be used by applications to insert data into a GStreamer pipeline. ...

  2. 剑指Offer:二叉树打印成多行【23】

    剑指Offer:二叉树打印成多行[23] 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目分析 Java题解 package tree; import java.uti ...

  3. virtualBox redhat 共享文件夹 安装增强功能

    (一) 场景描述: virtualBox设置了共享文件夹,显示让点击安装增强功能 点击后挂载了光盘 运行了里面的run,却一闪而过 原因: 权限不够 在终端,./VBoxLinuxAdditions. ...

  4. 对C++指针的一个比喻

    假如你身在上海,你的电脑出了一点问题,你解决不了,这时你想起了你的远在北京的朋友小D,此时小D打开了他的心爱的笔记本... c++中函数的参数传指针就像你用teamviewer与你的朋友小D建立连接, ...

  5. 蓝天白云大草原风景PSD背景素材

    蓝天白云大草原风景PSD源文件背景素材,蓝天白云,大草原,风景,背景素材,自然风景,草原景色,绿色清新背景 地址:http://www.huiyi8.com/psd/

  6. PHP相关安全配置【转】

    PHP是广泛使用的开源服务端脚本语言.通过HTTP或HTTPS协议,Apache Web服务允许用户访问文件或内容.服务端脚本语言的错误配置会导致各种问题.因此,PHP应该小心使用.以下是为系统管理员 ...

  7. 程序猿老公去米国参加 WWDC,顺便想带渡老婆蜜月,如何办签证?

    这个问题要拆开描述比较好:1. 老公是苹果开发者,抽中了2014 WWDC购票机会,打算自费去参加.如果自己成行,应该办何种签证?2. 顺带,两人新婚半年还未安排蜜月,打算提前几天过去先游览一下西海岸 ...

  8. python基础-正则2

    正则函数 Python提供re模块,包含所有正则表达式的功能 由于python的字符串本身也有\转义,所以需要注意: s = "ABC\\-001" 对应的正则表达式应为:'ABC ...

  9. PS 滤镜— — sparkle 效果

    clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread ...

  10. 国内镜像pip

    建议非清华大学校内的使用这个镜像: http://e.pypi.python.org/simple(这也是一个http://pypi.v2ex.com/simple),清华校内的就使用这个:http: ...