摘要:
1.getline std::string str; getline(std::cin, str); getline 2.O(1)1~n异或和(证明)(证明plus by mj:2n^(2n+1)=1) inline void Xor(int x) { int t = x & 3; if(t & 1 阅读全文
摘要:
条纹游戏是一个双人的游戏。所需要的物品有一个棋盘以及三种颜色的长方形条纹,这三种颜色分别是红色、绿色和蓝色。所有的红色条纹的尺寸是c*1,所有的绿色条纹的尺寸是z*1,所有的蓝色条纹的尺寸是n*1,这里c,z,n是正整数。每种颜色的条纹每个游戏者都拥有无限多个。 一个棋盘是一个尺寸为p*1的长方形, 阅读全文
摘要:
解:使用sg函数打表发现规律,然后暴力异或起来即可。 1 #include <bits/stdc++.h> 2 3 typedef long long LL; 4 const int N = 1000010; 5 6 int a[N]; 7 8 inline LL sg(LL x) { 9 int 阅读全文
摘要:
解:先搞出斐波那契数列,然后n²暴力算一堆时的SG函数,然后异或起来回答询问。 1 #include <cstdio> 2 #include <cstring> 3 4 const int N = 1010; 5 6 int sg[N], f[N], bin[N]; 7 8 int main() { 阅读全文
摘要:
有个很毒瘤的事就是位置不是按顺序给出的...... 发现每次我们能够把一个棋子向左挪且不能越过下一个。那么考虑两个棋子之间的间隙,就是一个阶梯博弈了。 1 #include <cstdio> 2 #include <algorithm> 3 4 const int N = 100010; 5 6 i 阅读全文
摘要:
题面: TBL和X用巧克力棒玩游戏。每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度。TBL先手两人轮流,无法操作的人输。 他们以最佳策略一共进行了10轮(每次一盒)。你能预测胜负吗? 如果胜则输出"NO",否则输出"YES" 解:Nim白学....... 考虑第一个人 阅读全文
摘要:
参考资料:《算法竞赛进阶指南》 SG函数:Steins;Gate函数。为0先手必败。反之先手必胜。 mex运算:mex(S) = min 有向图游戏:定义mex运算: SG(S) = mex(SG(son(S))) 说人话就是所有后继状态的SG值的mex。 公平组合游戏:多个独立游戏,每次选择一个游 阅读全文
摘要:
卡map还行.....手写hash表即可。 我一开始以为这个k会变......在sam上想各种奇技淫巧。 k不变就是问一段区间有多少对长度为k的子串相同。 然后hash把子串转化为数字,就是区间有多少对相同数字。直接莫队即可。 1 #include <bits/stdc++.h> 2 3 inlin 阅读全文