option=com_onlinejudge&Itemid=8&page=show_problem&problem=4246" target="_blank" style="">题目连接:uva 1500 - Alice and Bob

题目大意:在黑板上又一个序列,每次操作能够选择一个数减1,或者是合并两个数,一个数被减至1则自己主动消除,不能操作者输。

解题思路:结论,对于大于1的数能够看成是一个整数s,为消除他们的总操作步数,包含减1以及合并。c为列中1的个数,假设s>2的话,c或者是s为奇数则为必胜,否则必败。若s≤2的话(s=2或者s=0)是。推断c是否为3的倍数,是的话必败,不是的话必胜。

证明:s>2时。s和c均为偶数是为必败态。

s为奇数,c为偶数:先手操作,将s减1。转移至必败态。

s为偶数。c为奇数:先手操作,将一个1减1,则c会降低1,转移至必败态。

s为奇数,c为奇数:将一个1和s中的一个数合并。

转移至必败态。

s为偶数。c为偶数:s减1。则s为奇数c为偶数,必胜态。c减1,则s为偶数c为奇数。必胜态;合并1和非1数,s奇数c奇数,必胜态;

s==0或者s==2时,当c%3==0时,为必败态。

c%3==1时,将一个1减1,c%3==0,转移至必败态。

c%3==2时,对于s==0,合并两个1,则变为s+2,c-2。此时假设s==0,则变为s==2时。c%3==0的必败态。对于s==2。将s减1,则变为s变为1,于是1的个数又添加1,所以c%3==0,必败态。

c%3==0时。减掉一个1即为必胜态。

/******************
* c为1的个数,s为其它非1的总步数,包含合并。
* s > 2时,c若为奇数则必胜。为偶数则s为奇数时必胜;
* s == 2 || s == 0时。c不为3的倍数时必胜
******************/
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; int n, c, s, x; void init () {
c = s = 0;
scanf("%d", &n); for (int i = 0; i < n; i++) {
scanf("%d", &x);
if (x == 1)
c++;
else if (x > 1)
s += (x + 1);
} if (s)
s--;
} bool judge () {
if (s > 2)
return (c&1) || (s&1);
if (s == 0)
return c % 3;
return c % 3;
} int main () {
int cas;
scanf("%d", &cas);
for (int k = 1; k <= cas; k++) {
init();
printf("Case #%d: %s\n", k, judge() ? "Alice" : "Bob");
}
return 0;
}

版权声明:本文博主原创文章。博客,未经同意不得转载。

uva 1500 - Alice and Bob(论证)的更多相关文章

  1. UVA 1484 - Alice and Bob&#39;s Trip(树形DP)

    题目链接:1484 - Alice and Bob's Trip 题意:BOB和ALICE这对狗男女在一颗树上走,BOB先走,BOB要尽量使得总路径权和大,ALICE要小,可是有个条件,就是路径权值总 ...

  2. 2016中国大学生程序设计竞赛 - 网络选拔赛 J. Alice and Bob

    Alice and Bob Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  3. bzoj4730: Alice和Bob又在玩游戏

    Description Alice和Bob在玩游戏.有n个节点,m条边(0<=m<=n-1),构成若干棵有根树,每棵树的根节点是该连通块内编号最 小的点.Alice和Bob轮流操作,每回合 ...

  4. Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)

    Alice and Bob Time Limit: 1000ms   Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...

  5. sdutoj 2608 Alice and Bob

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2608 Alice and Bob Time L ...

  6. hdu 4268 Alice and Bob

    Alice and Bob Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Tota ...

  7. 2014 Super Training #6 A Alice and Bob --SG函数

    原题: ZOJ 3666 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3666 博弈问题. 题意:给你1~N个位置,N是最 ...

  8. ACdream 1112 Alice and Bob(素筛+博弈SG函数)

    Alice and Bob Time Limit:3000MS     Memory Limit:128000KB     64bit IO Format:%lld & %llu Submit ...

  9. 位运算 2013年山东省赛 F Alice and Bob

    题目传送门 /* 题意: 求(a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1) 式子中,x的p次方的系数 二进制位运算:p ...

随机推荐

  1. ASCII与Unicode编码消息写文件浅析

    [文章摘要] ASCII与Unicode是两种常见的字符编码. 它们的表示方法不一样,因而在程序中就要差别处理. 本文基于作者的实际开发经验,对ASCII与Unicode两种字符编码消息的写文件过程进 ...

  2. 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23866427 今天又遇到一个网页数据抓取的任务,给大家分享下. 说道网页信息抓取 ...

  3. hdu1711 Number Sequence

    Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], .... ...

  4. POJ 1798 Truck History

    Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for v ...

  5. arch linux设备(请参考官方文档,桌面安装没有找到一个好工作后)

    首先,启动安装系统(一获得通过vmware虚拟机) 1.设置键盘布局 #loadkeys "us" #设置为美国的键盘布局.一般能够默认就可以 2.建立硬盘的分区 我採用的是fdi ...

  6. Oracle trunc()函数

    Oracle trunc()函数的用法   --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysd ...

  7. java编程规范之java注释规范

    代码要是没有注释,对读者来说就是一堆乱七八糟的字母,为了提高代码的可读性和可维护性,必须对代码进行必要的注释,这里小编整理了一下java注释规范. (一)技巧 1:注释当前行快捷方式:ctrl+/ 2 ...

  8. [ACM] poj 3468 A Simple Problem with Integers(段树,为段更新,懒惰的标志)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 55273   ...

  9. isset,empty,is_null小知识

    <?php /** 在这项研究开始时,有那么多的人不能很好的运用isset,empty,is_null正确null,false等待值回报值做出正确的推理,在这里,我自己总结通过学习小知识,随后的 ...

  10. JAVA DATE类型推断尺寸数据比较法

    两Date变量类型通过compareTo的方式来比较.这种方法的叙述描述的是,这:假设参数 Date 等于该 Date.返回值 0.假设这 Date 于 Date 在参数,它返回小于 0 的值.假设这 ...