51Nod - 1714 B君的游戏】的更多相关文章

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1714 nim游戏的一个变形,需要打出sg函数的表 #include <bits/stdc++.h> using namespace std; typedef long long LL; ; ], maxs; int vis[maxn]; //yu控制递归层数,cur控制所分配最大值,next控制所分配最小值 void dfs(int cur, int yu…
每个数的SG值之和他有多少个1相关 打表复杂度:找K个有序的<n的非负数的复杂度为nk/(k!) 则这题的SG打表复杂度为648/7! 为1e10左右 void dfs(int cur, int yu, int ans, int next) { ) { vis[ans]=; return ; } for(int i=next; i<cur; i++) dfs(cur, yu-, ans^sg[i], i); } void init() { sg[]=; ;i<=; i++) { mems…
1714 B君的游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 B君和L君要玩一个游戏.刚开始有n个正整数  ai  . 双方轮流操作.每次操作,选一个正整数x,将其移除,再添加7个数字  x1,x2...x7  .要求对于  xi  ,满足  0<=xi<x  且  x&xi=xi 注意0不能被选取,所以这个游戏一定会结束,而谁无法操作谁就失败.B君根据自己的经验,认为先手胜率高一点,所以B君是先手.B君想知道自己是否必胜. Input 第一…
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1714 nim游戏的一个变形,需要打出sg函数的表 #include <bits/stdc++.h> using namespace std; typedef long long LL; ; ], maxs; int vis[maxn]; //yu控制递归层数,cur控制所分配最大值,next控制所分配最小值 void dfs(int cur, int yu…
1632 B君的连通 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 B国拥有n个城市,其交通系统呈树状结构,即任意两个城市存在且仅存在一条交通线将其连接.A国是B国的敌国企图秘密发射导弹打击B国的交通线,现假设每条交通线都有50%的概率被炸毁,B国希望知道在被炸毁之后,剩下联通块的个数的期望是多少? Input 一个数n(2<=n<=100000) 接下来n-1行,每行两个数x,y表示一条交通线.(1<=x,y<=n) 数据保证其交通系统构成一…
1072 威佐夫游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出2堆石子的数量,问最后谁能赢得比赛. 例如:2堆石子分别为3颗和5颗.那么不论A怎样拿,B都有对应的方法拿到最后1颗. Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T …
1629 B君的圆锥 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 B君要用一个表面积为S的圆锥将白山云包起来.   B君希望包住的白山云体积尽量大,B君想知道体积最大可以是多少.   注意圆锥的表面积包括底面和侧面. Input 一行一个整数,表示表面积S.(1 <= S <= 10^9) Output 一行一个实数,表示体积. Input示例 8 Output示例 1.504506 圆锥表面积s=π*r*r + π * r*l体积=π*…
小C和小L是好朋友,她们在玩一个游戏. 一开始有一个大小为n的石子堆,小C先手. 每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个). 如果取走最后一个人的算败,请问这个游戏小C是否能胜. Input一行表示数据组数Tcases(Tcases<=1,000). 后面Tcases行每行一个n(n<=1,000,000,000).Output有Tcases行对于先手获胜输出“TAK”,先手狗带输出“NIE”.Sample Input 1 5 Sampl…
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 多年后,每当Noder看到吉普赛人,就会想起那个遥远的下午. Noder躺在草地上漫无目的的张望,二楼的咖啡馆在日光下闪着亮,像是要进化成一颗巨大的咖啡豆.天气稍有些冷,但草还算暖和.不远的地方坐着一个吉普赛姑娘,手里拿着塔罗牌,带着耳机,边上是她的狗.狗看起来有点凶,姑娘却漂亮.Noder开始计算各种搭讪方式的成功概率,然而狗的存在....... 奇怪的事情发生了,姑娘自己走了过来,把耳机戴在N…
天堂里的游戏 李陶冶 (命题人) System Message (测试) 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 多年后,每当Noder看到吉普赛人,就会想起那个遥远的下午. Noder躺在草地上漫无目的的张望,二楼的咖啡馆在日光下闪着亮,像是要进化成一颗巨大的咖啡豆.天气稍有些冷,但草还算暖和.不远的地方坐着一个吉普赛姑娘,手里拿着塔罗牌,带着耳机,边上是她的狗.狗看起来有点凶,姑娘却漂亮.Noder开始计算各种搭讪方式的成功概率,然而狗的存在....... 奇怪的事…
比较坑的题目. 题意就是:给出一堆石子,一次操作可以变成它的约数个,也可以拿只拿一个,不能变成一个,最后拿的人输. 经过打表发现 几乎所有质数都是先手必败的,几乎所有合数都是先手必胜的 只有几个例外,就是17^n, 2^n这些. 不过继续推导可以发现16是先手必败的,因为2,4,8,15都是先手必胜的 所以2^n(n>4)都是先手必胜的 17是先手必胜的,所以17^2是先手必败的,17^n(n>2)是先手必胜的 17*2是先手必败的 同理可以推导出2^n*17^m这些(当n>1或m>…
题目: 这题看起来难,其实这么多概率啥的都是唬人的.甚至连快速幂都不用就可以解. 解法:    n个节点,n-1条边,期望会有一半的边被炸毁(因为总体概率就是50%). 即(n-1)/2条边被炸毁,这时有(n+1)/2个连通块.(这个不是向下取整的). 所以f[n] = (n+1)/2*2^(n-1) = (n+1)*2^(n-2).       代码: #include <iostream> #include <algorithm> #include <stdio.h>…
SG[i]表示一个数二进制下有i个1的SG值 SG[0]=0 打表: #include<bits/stdc++.h> using namespace std; ]; ]; , x; int main() { sg[] = ; ; i <= ; i++) { ; j <= maxnnow; j++) { vis[j] = ; } maxnnow = ; ; j1 < i; j1++) for (int j2 = j1; j2 < i; j2++) for (int j3…
题目链接 先打一个sg函数的表,找找规律,发现sg函数可以递归求解 打表代码如下 #include<bits/stdc++.h> using namespace std; typedef long long LL; ; bool vis[N]; int sg[N]; int k; void init() { memset(sg,,sizeof(sg)); memset(vis,false,sizeof(vis)); sg[]=,sg[]=; ;i<=;i++) { memset(vis,…
题目链接 此类博弈不需要考虑sg函数,只需要确定必胜态和必败态,解题思路一般为打败先打表找规律,而后找规律给出统一的公式.打表方式:给定初始条件(此题中为ok[0]=ok[1]=0),然后从低到高枚举某一状态的所有次态,若有存在必败次态,则当前状态为必胜态,否则当前状态必败. 题意:对单独一堆石子,支持两种操作:1.石子数-1:2.石子数变为原来石子数的某一因数.取走走后一堆或无法操作(面对n==0,坑啊..)者为负. 先打表找下规律 #include<bits/stdc++.h> using…
胡小兔的 OI 日志 3 (2017.9.1 ~ 2017.10.11) 标签: 日记 查看最新 2017-09-02 51nod 1378 夹克老爷的愤怒 | 树形DP 夹克老爷逢三抽一之后,由于采用了新师爷的策略,乡民们叫苦不堪,开始组织起来暴力抗租. 夹克老爷很愤怒,他决定派家丁常驻村中进行镇压. 诺德县 有N个村庄,编号0 至 N-1,这些村庄之间用N - 1条道路连接起来. 家丁都是经过系统训练的暴力机器,每名家丁可以被派驻在一个村庄,并镇压当前村庄以及距离该村庄不超过K段道路的村庄.…
智力彻底没有了...看来再也拿不到奖金了QAQ... A B君的游戏 因为数据是9B1L,所以我们可以hash试一下数据... #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> #define rep(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) using n…
取球游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定:     每个人从盒子中取出的球的数目必须是:1,3,7或者8个. 轮到某一方取球时不能弃权! A先取球,然后双方交替取球,直到取完. 被迫拿到最后一个球的一方为负方(输方) 请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢?…
ZLYD团队第二周项目总结 项目进展 确定项目内容.目标.实现计划 首先确定游戏界面的游戏区域中墙的位置,绘制其图形,并通过其中的方法,返回墙壁的位置等属性. 根据豆子的位置,绘制其图形. 初始化吃豆者的位置.速度. 初始化水果的位置.出现时间及移动方向. 根据位置.状态初始化敌人. 控制游戏的起始. 初始化图形界面的布局,确定游戏和规则. 学习理论基础 Applet基础相关知识 在浏览包含Java Applet的页面时,浏览器会首先从Web服务器上下载Java Applet,然后在本地执行,因…
题目链接:51nod 1459 迷宫游戏 dij裸题. #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<queue> #define CLR(a,b) memset((a),(b),sizeof((a))) using namespace std; const int inf = 0x3f3f3f3f; ; int d[N], vis…
首先,51nod的那道题就是最简单的尼姆博弈问题. 尼姆博弈主要就是判断奇异局势,现在我们就假设有三个石子堆,最简单的(0,n,n)就是一个奇异局势,因为无论先手怎么拿,后手总是可以在另一堆里拿走相同的石子数. 再看另外一个奇异局势(1,2,3): ①如果先手拿第一个石子堆,那么后手可以形成(0,2,2)的局势,先手必败. ②如果先手拿第二个石子堆的1个石子,那么后手可以形成(1,1,0)的局势,先手必败. ③如果先手拿第二个石子堆的2个石子,那么后手可以形成(1,0,1)的局势,先手必败. 后…
链接:迷宫游戏 问题 - 51Nod  http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459 1459 迷宫游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数.还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间.游戏规定了你的起点和…
1534 棋子游戏 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1534 波雷卡普和瓦西里喜欢简单的逻辑游戏.今天他们玩了一个游戏,这个游戏在一个很大的棋盘上进行,他们每个人有一个棋子.他们轮流移动自己的棋子,波雷卡普先开始.每一步移动中,波雷卡普可以将他的棋子从(x,y) 移动到 (x-1,y) 或…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1070 题意: 思路: 这个是斐波那契博弈,http://blog.csdn.net/acm_cxlove/article/details/7835016,关于斐波那契博弈的介绍,可以看看这篇博客.以下的内容便是转自这篇博客. 1.当i=2时,先手只能取1颗,显然必败,结论成立. 2.假设当i<=k时,结论成立. 则当i=k+1时,f[i] = f[k]+f[k-1].…
题目:传送门. 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍. 约定取走最后一个石子的人为赢家,求必败态. 结论:当n为Fibonacci数的时候,必败. f[i]:1,2,3,5,8,13,21,34,55,89…… 用第二数学归纳法证明: 为了方便,我们将n记为f[i]. 1.当i=2时,先手只能取1颗,显然必败,结论成立. 2.假设当i<=k时,结论成…
题目链接: B君的圆锥 基准时间限制:1 秒 空间限制:131072 KB  B君要用一个表面积为S的圆锥将白山云包起来.   B君希望包住的白山云体积尽量大,B君想知道体积最大可以是多少.   注意圆锥的表面积包括底面和侧面. Input 一行一个整数,表示表面积S.(1 <= S <= 10^9) Output 一行一个实数,表示体积. Input示例 8 Output示例 1.504506 题意: 思路: 找打圆锥体积与表面积的关系,再找出体积的最大值就好了,可以发现当圆锥的底面积PI*…
废话不多说,先上题目. 51nod Codeforces 两个其实是一个意思,看51nod题目就讲的很清楚了,题意不再赘述. 直接讲我的分析过程:刚开始拿到手有点蒙蔽,看起来很难,然后......然后我就开始一顿胡蒙,各种举例子.找规律下面为我取n = 10的过程. 1.首先1肯定不用取.因为它太特殊了,如果 取它的话,只能判断是不是1,因为所有数都是1的倍数:反之其他所有情况排除了就选它,不用浪费次数来取它. 2.素数肯定是要取的.因为......因为这题一看就是考素数的题. 3.以10为例,…
1185 威佐夫游戏 V2  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出2堆石子的数量,问最后谁能赢得比赛. 例如:2堆石子分别为3颗和5颗.那么不论A怎样拿,B都有对应的方法拿到最后1颗.   Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 …
参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6445369.html 1381 硬币游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 5  难度:1级算法题 有一个简单但是很有趣的游戏.在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平行线(如下图所示).两条相邻平行线之间的距离是1,硬币的半径是R,然后我们来抛硬币到桌子上,抛下之后硬币有时候会和一些直线相交(相切的情况也算是相交),有时候不会. 请你来计算一下抛一次硬币…
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1069 有N堆石子.A B两个人轮流拿,A先拿.每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N及每堆石子的数量,问最后谁能赢得比赛. 例如:3堆石子,每堆1颗.A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子.   Input 第1行:一个数N,表示有N堆石子…