摘要:
把格子分成四类 第一类是蓝线左右的相邻两个格子 第二类为与蓝线左边格子相邻的点 第三类为与蓝线右边格子相邻的点 建边就S朝第二类每个点建边 第二类每个点朝其相邻的第一类建边 第一类从左格子朝右格子建边 第一类朝与其相邻的第三类建边 第三类朝T建边 阅读全文
摘要:
阶梯博弈: 阶梯博弈:博弈在阶梯上进行,每次可以将一堆的若干式子移动到上一阶去,不可操作者输。 忽略所有的偶数阶梯,只留下奇数阶梯,转化为普通的NimNim游戏。大致的思路是这样的:首先终止状态一定是所有石子都在00号阶梯,即一个偶数阶梯。那么如果对方移动了一个偶数阶梯上的石子,那么你可以在移动结束 阅读全文
摘要:
如果没有拿巧克力棒的操作的话 是一个裸的NIM游戏 现在加入了这个操作 改变了异或的值 那么我们只需要判断先手的人是否可以从集合中取出一个极大的异或值为0的子集即可 阅读全文
摘要:
暴力写法直接dfs 首先我们可以拿一个2X2的格子证明 走过的路径不可能成环 则我们可以把图黑白染色 变成一个二分图(空的点为黑色) 如果一个点必在最大匹配中 那么它可以沿着匹配边走 最终的交错路边数一定是奇数 (因为如果是偶数的话 就说明该点可替换 不是必在最大匹配中的点) 现在问题变成了如果判断 阅读全文
摘要:
https://vijos.org/p/1243 阅读全文
摘要:
第一维直接遍历 第二维用线段树维护每个最左端可以得到的贡献 在线段树上每次删除一个点会影响到 X X-R X-2*R 3个值 最多操作1e5次 复杂度 6*n*logn(删了还要加回来 #include<bits/stdc++.h> using namespace std; const int MA 阅读全文
摘要:
开两个集合,一个存储当前顶点可以到达的点,另一个存储当前顶点不能到达的点。如果可以到达,那肯定由该顶点到达是最短的,如果不能,那就留着下一次再判。 阅读全文
摘要:
题目很长,但是意思就是给你n,A,B,C,D n表示有n个城市 A是飞机的重量 B是一个常数表示转机代价 C是单位燃油的价格 D是一个常数 假设一个点到另外一个点的距离为整数L 起飞前的油量为f 则在这途中每飞行一单位距离 就花费(f+A)/D的燃油 #include <bits/stdc++.h> 阅读全文
摘要:
•int __builtin_ffs (unsigned int x) 返回x的最后一位1的是从后向前第几位,比如7368(1110011001000)返回4。 •int __builtin_clz (unsigned int x) 返回前导的0的个数。 •int __builtin_ctz (un 阅读全文