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(论证)的更多相关文章
- UVA 1484 - Alice and Bob's Trip(树形DP)
题目链接:1484 - Alice and Bob's Trip 题意:BOB和ALICE这对狗男女在一颗树上走,BOB先走,BOB要尽量使得总路径权和大,ALICE要小,可是有个条件,就是路径权值总 ...
- 2016中国大学生程序设计竞赛 - 网络选拔赛 J. Alice and Bob
Alice and Bob Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- bzoj4730: Alice和Bob又在玩游戏
Description Alice和Bob在玩游戏.有n个节点,m条边(0<=m<=n-1),构成若干棵有根树,每棵树的根节点是该连通块内编号最 小的点.Alice和Bob轮流操作,每回合 ...
- Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)
Alice and Bob Time Limit: 1000ms Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...
- sdutoj 2608 Alice and Bob
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2608 Alice and Bob Time L ...
- hdu 4268 Alice and Bob
Alice and Bob Time Limit : 10000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Tota ...
- 2014 Super Training #6 A Alice and Bob --SG函数
原题: ZOJ 3666 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3666 博弈问题. 题意:给你1~N个位置,N是最 ...
- ACdream 1112 Alice and Bob(素筛+博弈SG函数)
Alice and Bob Time Limit:3000MS Memory Limit:128000KB 64bit IO Format:%lld & %llu Submit ...
- 位运算 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 ...
随机推荐
- 【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(四)
全系列Index: [原创]只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(一) [原创]只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(二) [原创]只学到二维数组和结构体,不用链表也能 ...
- delegate实现Javascript的each方法
C#如何用delegate实现Javascript的each方法 C#中有很多易混淆的关键词,例如delegate,Func, Action和 Predicate.Func, Action和 Pr ...
- 逆向wireshark学习SSL协议算法(转)
小贴士:SSL协议的定义 SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整 ...
- 最简单的视频编码器:基于libx265(编码YUV为H.265)
===================================================== 最简单的视频编码器系列文章列表: 最简单的视频编码器:编译 最简单的视频编码器:基于libx ...
- 【JUnit4.10来源分析】6 Runner
org.junit.runner.Runner它是JUnit作业引擎.它在许多类型的支持下的.处理试验和生产(Description).Failure和Result和其它输出. Runner参见图主类 ...
- 简单的虚拟摇杆控制移动(NGUI)
一.用NGUI创建虚拟摇杆贴图 先创建一个sprite作为背景叫做JoyStick 并添加一个BoxCollider,再创建一个sprite child作为虚拟摇杆中间的按钮,叫做button 二.通 ...
- UNITY3D MAC版本号破解
首先,解释一下.是公司做开发建议去购买正版. 之前网上也有非常多人贴出了破解方法,有些也是能够的.可是大多数解说不太具体,在这里贴出相对具体点的教程.本人亲測成功(測试版本Unity4.0.1 mac ...
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od(转)
awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk '' | output 1.首先要知道形式 awk 'command' fi ...
- COM Interop
1.MSDN上的文章:COM Interop教程 2.接口的三种类型:IDispatch.IUnknown和Dual 3.使用TlbImp来更灵活地自动生成RCW 4.托管事件基于委托,而非托管事件( ...
- UVA 11464 Even Parity(递归枚举)
11464 - Even Parity Time limit: 3.000 seconds We have a grid of size N x N. Each cell of the grid in ...