「Githug」Git 游戏通关流程】的更多相关文章

Githug 他喵的这是个啥!?难道不是 GitHub 拼错了么,和 Git 什么关系? 和游戏又有什么关系? 其实,他的元身在这里:https://github.com/Gazler/githug ,这个命令行工具被设计来练习你的 Git 技能,它把平常可能遇到的一些场景都实例化,变成一个一个的关卡,一共有 55 个关卡,所以将他形象的形容为 Git 游戏. 既然是游戏,作为一个专业的游戏玩家,通关自然是我的最终目标了!!! 安装游戏 没什么好说的,终端运行如下命令即可,如果碰到了墙,自行搬梯…
题解 c一样的就是一个独立的游戏 我们对于2和3的指数 sg[i][j] 表示\(c \cdot 2^i \cdot 3^j\)的棋子,只有这个硬币是反面,翻转的硬币是正面的sg值 枚举sg函数所有可能的局面,每个后继局面的sg值,就是所有被翻到背面的硬币sg值的异或和 我们忽略了反转当前硬币前面可能不是全部正面,但是这是正确的,我们可以证明一下 如果一个局面所有背面朝上的棋子sg函数异或起来为\(x\) 若\(x!=0\) 那么我们找到\(x\)最高位是\(2^k\),我们找到一个含有\(2^…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利. 大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了. 同学们觉得要加强趣味性,所以要找一个同学扔很多很多次硬币,其他同学记录下正反面情况. 用 H 表示正面朝上, 用 T 表示反面朝上,扔很多次硬币后,会得到一个硬币序列.比如 HTT 表示第一次正面朝上,后两次反面朝上…
link Description 桌面上摊开着一些卡牌,这是她平时很爱玩的一个游戏.如今卡牌还在,她却不在我身边.不知不觉,我翻开了卡牌,回忆起了当时一起玩卡牌的那段时间. 每张卡牌的正面与反面都各有一个数字,我每次把卡牌按照我想的放到桌子上,而她则是将其中的一些卡牌翻转,最后使得桌面上所有朝上的数字都各不相同. 我望着自己不知不觉翻开的卡牌,突然想起了之前她曾不止一次的让我帮她计算最少达成目标所需要的最少的翻转次数,以及最少翻转达成目标的方案数. (两种方式被认为是相同的当且仅当两种方式需要翻…
题目传送门 Description 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利. 大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了. 同学们觉得要加强趣味性,所以要找一个同学扔很多很多次硬币,其他同学记录下正反面情况. 用 $ \texttt{H} $ 表示正面朝上, 用 $ \texttt{T} $ 表示反面朝上,扔很多次硬币后,会得到一个硬币序列.比如 $ \texttt{HTT} $ 表示第一次正面朝上,后两次反面朝上. 但扔到什么时候停止…
LOJ 2004 100pts 首先我们肯定要建AC自动机的.. 那么这题就肯定是个AC自动机上\(dp\). 所以想想状态. 首先如果我们把状态设成这样行不行: \(dp(i)\)表示匹配到了i节点的概率. 那么转移的时候就是\(dp(i)=\frac{1}{2}\sum dp(go_i^c)\). 这样的转移是有环的...所以高斯消元... 但是!AC自动机的节点数是\(O(n^2)\)的... 所以T得飞起.. 那么试着改一改? 改为\(dp(i)\)直接表示第i个串第一次出现的概率? 那…
题解 终于了解怎么动态维护虚树了 就是把点按照dfs序排个序啊 这道题显然是求虚树上所有边长的两倍 我们把dfs序排完序,相邻两个点加上路径长(包括首尾),删除的时候删一个点减去它到两边再加上新近相邻的两个点即可 增加同理 代码 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define space putchar(' ') #define enter p…
题解 简单分析一下就知道\(\lfloor \frac{N}{i} \rfloor\)相同的\(i\)的\(sg\)函数相同 所以我们只要算\(\sqrt{n}\)个\(sg\)函数就好 算每一个\(sg(m)\)的时候我们可以通过把这个数再拆成\(\sqrt{m}\)段来计算\(sg\)值 复杂度用积分分析是\(n^{frac{3}{4}}\) 代码 #include <bits/stdc++.h> #define fi first #define se second #define pii…
题解 圆方树建好之后点是原来的两倍,而st表求lca也要开到点的两倍,所以是四倍 我并没有开小,然而= =,我的预处理log2,写成了200000,而不是400000 我是不是折翼啊= = 很可写,我们对于割点考虑一下圆方树,发现答案就是圆方树上两个圆点之间经过了多少圆点,把圆点拿出来然后建立虚树,统计一下这个点和父亲之间有多少个圆点,建立虚树之后统计一下加入的lca是不是圆点,如果是的话也要把答案+1 代码 #include <iostream> #include <cstdio>…
参考这里 #include <iostream> #include <cstdio> #include <set> using namespace std; typedef long long ll; int n, m, ise[100005], fa[100005][19], dep[100005], uu, vv, ww, hea[100005], cnt; int faq, nfd[100005]; ll dis[100005], ans; struct Edge…