摘要:
题意: 给你两堆石子,有两种操作:1,在某一堆取x个(x>=1个);2,在两堆同时取x个(x>=1)。 给你初始两堆石子数,问先手胜还是后手胜。 题解: 其实这是著名的威佐夫博弈,有个结论是假设两堆石子为(a,b)(a<=b),那么如果满足{a == floor(0.5*(sqrt(5)+1)*(b 阅读全文
摘要:
题意: n个数字排成一列,每个人只能选择最左边或最右边的数字取掉,自己该回合的得分就是该数字的值。 当两个人都选择最优决策时,问两个人各能得到多少分。 题解: 博弈论的外表,实质则是记忆化搜索 (不过知道博弈论原理的话应该更好想吧) #include<iostream> #include<cstdi 阅读全文
摘要:
题意: 一个n*n的棋盘,一开始在左上角有一枚棋子,操作为可以上下左右移动一格,不能移出棋盘且不能移动到之前走过的格子。问先手胜还是后手胜 https://www.luogu.org/problemnew/show/P4136 题解: 假如n是偶数,我们可以把所有格子划分成1*2的块。那么先手只要将 阅读全文
摘要:
题意: 给你一个数n(n<=1e6),玩家可以进行的操作为减去该数最大数码或最小非零数码。即数2014可以减去1变成2013或减去4变成2010。将数变成0的一方赢。 题解: 直接求出1-1e6的SG函数值即可。复杂度O(n*lgn)(这里的log以10为底)。 #include<iostream> 阅读全文
摘要:
题意: 给你n组石子,每组有两摞。操作为选其中一摞石子分成两摞,抛弃原来同一组的另一摞石子,直到无法操作。问给你这n组石子,问先手胜还是后手胜。 (比如(10,8,),你可以将10分为(5,5),那么这一组石子就成了(5,5),那个8就可以不用管了) 题目链接:https://www.luogu.o 阅读全文
摘要:
由于明天开学,不一定有时间写博客,故今天一次写两道题qaq q1: 题意: 一堆n个石子,可以取1,2,3...m个,双方轮流取,给你n和m,问先手胜还是后手胜 题解: 易得当n%(m+1)==0时后手必胜,否则先手胜。假如对方取x个,你就取(m+1-x)个,使得对手面对的数一直是(m+1)的倍数, 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P3150 题目大意: 两个人在玩游戏,一开始有一个数x,先手方把他拆分成两个数a和b,使得(a+b==x,a>0,b>0),然后后手方选择其中一个数按之前规则拆分,另一个数就被丢掉,然后先手方再从两个数中选择一个... . 阅读全文
摘要:
题目大意: 给你三个自然数a,b,c,让你求一组x,y使得(a*x + b*y == 1)且(|x|+|y|)最小,若(|x|+|y|)相同则使得(a*|x|+b*|y|)最小。 题解: 我们可以使用扩欧轻易求出一组(x0,y0),但怎么才能让(|x|+|y|)最小呢? 我们设 d = gcd(a, 阅读全文
摘要:
题目大意: 给你一个n行20列的棋盘,上面有一些棋子 每个棋子只能往右边第一个空格处移动,无棋子可移动即判定为输 现在给你棋盘大小和棋子分布,问先手是否必胜 题解: 可以看出每行是独立的,也就是说只要求出每行的SG函数值,在亦或一下就可以了(SG定理^_^) 又由于每行长度一样,所以可以预处理每个状 阅读全文
摘要:
平衡树是什么? 其实平衡树就是支持旋转的二叉查找树。 什么是二叉查找树呢? 其实就是满足(左子树(全部节点) < 根 < 右子树(全部节点))的一棵树,比如↓ (注意并不是每个节点都要是满的,也就是说它不一定是一棵完全二叉树) 那么二叉查找树有什么用呢? 假如我们要查询第k大的数,我们从根节点开始往 阅读全文