题目链接:Balloon Game

题目大意:

Alice 和 Bob进行一个博弈游戏,他们要摆放气球,保证颜色一样的气球全部相邻出现,现在在一个序列中气球有一部分已经摆放,还有一些未摆放,用"?"表示。比如:a?b?c,那么最后我们能摆放成aabbc,aabdc......

Alice先手摆放气球,他想让气球的颜色种数为奇数个,Bob后手放,想让颜色种数为偶数个,问对于每个询问Alice是否有必胜策略。

题目分析:

第一次看完题目的时候,觉得对于这个博弈问题一些情况是可以解决的:

1.当出现"a?...?a"这种情况下时,中间一段其实已经确定了是"a",所以只有当Alice和Bob不想改变其他现有格局的气球才会放一个,然后他们都会交替的放颜色确定的气球,所以他们的奇偶性能够“反转”最后的结果。

2.当出现"a?...?b"这种情况下时,如果先手不想再增加颜色,完全可以在最后一个b前放个"a",那么这一段的"?"也变成了情况1。

3.当出现"a?...?b"这种情况下时,如果先手想增加颜色的话,那么他会在哪里增加一个新颜色是关键。不管在哪里添加一个新的颜色,我们都会把"?...?",拆成两个序列,这里就需要奇偶讨论了。

1)当"a?...?b"中的"?"个数为偶数个,那么增加一个颜色,会把其拆成一奇一偶两个"???"序列。这种情况其实与单个"a?...?b"中的"?"个数为奇数个一样的。

2)当"a?...?b"中的"?"个数为奇数个,那么增加一个颜色,会把其拆成两偶两个"???"序列。这种情况其实与单个"a?...?b"中的"?"个数为偶数个一样的。

综上所述,能否有必胜的策略的因素有:1)现有颜色个数;2)不确定颜色的气球的奇偶性;3)确定颜色的气球的奇偶性

不过在训练时我没有敢去做的原因是当时以为要考虑到颜色只有26种,那么判断将相当复杂,因为我们要考虑剩下的颜色个数等等。。。不过后来看到hint里有一句:“Though the showing colors in input case will only be a - z, you can use any color.” QAQ~~~

所以看清题目还是最关键啊~

/*author:Samsons
date:2015.4.12*/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream> using namespace std; int color[];
int main()
{
//freopen("b.in","r",stdin);
memset(color,,sizeof(color));
char tmp='\0';
int num,num_s,num_n,num_co,ans,i;
num=;num_s=;num_n=;num_co=;
char ch;
while (scanf("%c",&ch)!=EOF)
{
if (ch=='?')
{
num++;
continue;
}
if (tmp!=ch)
{
color[ch-'a']=;
num_n+=num;
tmp=ch;
num=;
}
else
{
color[ch-'a']=;
num_s+=num;
tmp=ch;
num=;
}
}
num_n+=num;
for (i=;i<;i++)
if (color[i]==) num_co++;
if (num_n==)
{
if (num_co % ==)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
return ;
}
if (num_n==)
{
cout<<"Yes"<<endl;
return ;
}
ans=;
if (num_n % ==) ans=;
if (num_s % ==)
if (ans==) ans=;
else ans=;
if (ans==) cout<<"Yes"<<endl;
else cout <<"No"<<endl;
return ;
}

UESTC794 Balloon Game 博弈的更多相关文章

  1. Codeforces Gym-100985C: MaratonIME plays Nim(交互题&博弈)

    C. MaratonIME plays Nim time limit per test : 2.0 smemory limit per test : 64 MBinputstandard inputo ...

  2. hdu----(1849)Rabbit and Grass(简单的尼姆博弈)

    Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. HDU 5754 Life Winner Bo 组合博弈

    Life Winner Bo Problem Description   Bo is a "Life Winner".He likes playing chessboard gam ...

  4. HDU 2509 Nim博弈变形

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

  5. HDU 1907 Nim博弈变形

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

  6. 51nod1072(wythoff 博弈)

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1072 题意: 中文题诶~ 思路: 博弈套路是有的, 找np局 ...

  7. ACM: NBUT 1107 盒子游戏 - 简单博弈

     NBUT 1107  盒子游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:  Practice  Appoint ...

  8. 【转】ACM博弈知识汇总

    博弈知识汇总 转自:http://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍 ...

  9. HDOJ 1004 Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

随机推荐

  1. Examining the Rooms - 第一类斯特灵数

    ---恢复内容开始--- 2017-08-10 20:32:37 writer:pprp 题意如下: Recently in Teddy's hometown there is a competiti ...

  2. Codeforces Round #365 (Div. 2) E - Mishka and Divisors(转化成01-背包)

    http://codeforces.com/contest/703/problem/E 题意: 给出n个数和一个k,计算出至少要多少个数相乘才是k的倍数. 思路:这道题目参考了杭电大神的代码http: ...

  3. springboot idea 配置热加载

    在idea 配置springboot的热加载,只需要三步: 第一步.引用jar包 <dependency> <groupId>org.springframework.boot& ...

  4. P3600 随机数生成器

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  5. RabbitMQ 之消息确认机制(事务+Confirm)

    概述 在 Rabbitmq 中我们可以通过持久化来解决因为服务器异常而导致丢失的问题,除此之外我们还会遇到一个问题:生产者将消息发送出去之后,消息到底有没有正确到达 Rabbit 服务器呢?如果不错得 ...

  6. 深入理解AUC

    https://tracholar.github.io/machine-learning/2018/01/26/auc.html 我觉得作者写的很不错

  7. Js 操作 Cookies

    <script language=javascript> // cookie其实是一个key=value就是一个cookie而不是 //获得coolie 的值 function cooki ...

  8. 身份证真实性校验js、mini ui身份证长度正则验证

    身份证号码真实性校验 <input type="text" value="请输入身份证号" id="cards" ><bu ...

  9. Winform开发中另一种样式的OutLookBar工具条

    很早的时候,曾经写了一篇随笔<WinForm界面开发之“OutLookBar”工具条>介绍了OutLookBar样式的工具条,得到很多同行的热烈反馈,我个人也比较喜欢这样的工具条布局,因此 ...

  10. C# 处理 JSON 常用的帮助类

    C#请求接口的方法,具体代码: 首先需要添加引用和第三方的组件,具体如下: 引用命名空间: using System.IO; using Newtonsoft.Json.Linq; using Sys ...