poj3480--John

题意:n堆石子,两人轮流操作,每次操作只能选定其中一堆,并取走若干个(>=1个)。谁取走最后一个谁输。给定一个状态,问先取的赢还是后取的赢。

整个游戏反过来,如果sg为0先手必胜,不为0必败。(特殊情况:所有堆都是1,这时候奇数堆必胜,偶数必败)

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<string>
 6 #include<algorithm>
 7 int main(){
 8     int T,n,x;
 9     scanf("%d",&T);
10     while (T--){
11         int cnt=0,sg=0;
12         scanf("%d",&n);
13         for (int i=1;i<=n;i++){
14             scanf("%d",&x);
15             if (x==1) cnt++;
16             sg^=x;
17         }
18         if (cnt==n){
19             if (sg) printf("Brother\n");
20             else printf("John\n");
21         }
22         else{
23             if (sg) printf("John\n");
24             else printf("Brother\n");
25         }
26     }
27 }
时间: 2024-10-14 12:23:02

poj3480--John的相关文章

poj3480 John (nim博弈变形--SJ定理)

John Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2940   Accepted: 1432 Description Little John is playing very funny game with his younger brother. There is one big box filled with M&Ms of different colors. At first John has to eat s

【POJ3480】John 博弈 Anti-SG mis&#232;re规则尼姆游戏

转载请注明出处:http://blog.csdn.net/vmurder/article/details/42671843 其实我就是觉得原创的访问量比未授权盗版多有点不爽233... 题意:跟NIM游戏差不多,不过是谁不能操作了,谁赢. 定理: NIM游戏规则取最后一个石子输 适用范围:对于任意一个Anti-SG 游戏,当局面中所有的单一游戏 的SG值为0时,游戏结束. (1)SG==0,有某单一游戏的SG>1.(败) (2)SG!=0,有某单一游戏的SG>1.(胜) (3)SG==0,无某

POJ 1041 John&#39;s trip 无向图的【欧拉回路】路径输出

欧拉回路第一题TVT 本题的一个小技巧在于: [建立一个存放点与边关系的邻接矩阵] 1.先判断是否存在欧拉路径 无向图: 欧拉回路:连通 + 所有定点的度为偶数 欧拉路径:连通 + 除源点和终点外都为偶数 有向图: 欧拉回路:连通 + 所有点的入度 == 出度 欧拉路径:连通 + 源点 出度-入度=1 && 终点 入度 - 出度 = 1 && 其余点 入度 == 出度: 2.求欧拉路径 : step 1:选取起点(如果是点的度数全为偶数任意点为S如果有两个点的度数位奇数取一

shadow文件弱口令暴力破解——John

在渗透测试中,这里主要说的是linux系统,我们经常遇到任意文件下载或读取,以及命令执行等,但是命令执行有些时候并没有交互式的,我们想添加账号和密码就会很困难,所以这时我们就可以读取shadow文件,将内容保存到本地,然后使用john来进行破解,从而可使用系统中的账号进行远程连接控制! 下载地址:http://www.openwall.com/john/ 基本使用语法: john shadow [email protected]:~# john /etc/shadow Warning: dete

BZOJ1022: [SHOI2008]小约翰的游戏John(Nim博弈)

Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取,我们规定取到最后一粒石子的人算输.小约翰相当固执,他坚持认为先取的人有很大的优势,所以他总是先取石子,而他的哥哥就聪明多了,他从来没有在游戏中犯过错误.小约翰一怒之前请你来做他的参谋.自然,你应该先写一个程序,预测一下谁将获得游戏的胜利. Input 本题的输入由多组数据组成第一行包括一个整数T,

HDU1907 John

Description Little John is playing very funny game with his younger brother. There is one big box filled with M&Ms of different colors. At first John has to eat several M&Ms of the same color. Then his opponent has to make a turn. And so on. Pleas

使用John the ripper工具来尝试破解Linux密码

这篇文章主要介绍了使用John the ripper工具来尝试破解Linux密码的方法,这款工具可能主要被用来破解系统用户的密码以获得文件操作权限,需要的朋友可以参考下 John有别于Hdra之类的工具.Hydra进行盲目的蛮力攻击,其方法是在FTP服务器或Telnet服务器上的服务后台程序上尝试用户名/密码组合.不过,John首先需要散列.所以,对黑客来说更大的挑战是,先搞到需要破解的散列.如今,使用网上随处可得的免费彩虹表(rainbow table),比较容易破解散列.只要进入到其中一个网

HDU2491 Priest John&#39;s Busiest Day

题目链接 题意: 有n个人要进行乒乓球比赛,每个人都一个能力值,每个人出现的次序就是他们住的位置 现在要求进行一场比赛,三个人,裁判的能力值在两个选手之间,住的位置也在两个人的之间 问这种比赛一共可以进行多少次 思路: 用树状数组做,否则TLE,先从左到右扫一遍,计算每点左边大的个数和小的个数, 再从右到左扫一遍,计算每点右边大和小的个数,然后交叉相乘取和就可以了 代码如下: #include<cstdio> #include<cstring> #include<string

UVA - 1420 Priest John&#39;s Busiest Day

题目大意:有一个司仪,要主持 n 场婚礼,给出婚礼的起始时间和终止时间,每个婚礼需要超过一半的时间做为仪式,并且仪式不能终止.问说司仪能否主持 n 场婚礼. 解题思路:贪心,为了尽量主持多的婚礼,每场的仪式时间就一定要尽量短 d = (t - s) / 2 + 1,(因为必须大于一半,所以加 1).然后按照每场婚礼可以最晚结束的时间排序 t - d,(因为要满足所有的婚礼,所以尽量解决早点的仪式,腾出时间来给后面的婚礼),维护一个占用时间值即可. #include <cstdio> #incl

POJ 1041 John&#39;s trip (无向图欧拉回路)

John's trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7433   Accepted: 2465   Special Judge Description Little Johnny has got a new car. He decided to drive around the town to visit his friends. Johnny wanted to visit all his frien