摘要:
容斥原理是解决这一类问题的:有 \(N\) 个集合 \(S_1,S_2,\dots,S_N\),求 \(|\bigcup \limits_{i=1}^{N}S_i|\)。 我们就能发现,所有偶数个集合的交集前面都是减号,而奇数的前面的都是加号,也就是: \[|\bigcup \limits_{i=1 阅读全文
摘要:
前置知识:可撤销化并查集 注意:可撤销化并查集的作用和删边不一样,其只能撤销最近的一次操作。 既然只需撤销,那么只需在在合并并查集时用个 vector 记录下合并的哪两个点,撤销时就直接还原就行了。 这里要强调一下,可撤销化并查集不能路径压缩,只能启发式合并。 代码 int f[MAXN], sz[ 阅读全文
摘要:
有向图游戏 给定一个有向图,初始在结点 \(s\) 上有一个棋子。两名玩家将轮流移动这个棋子到相邻的一个点上。若有一方不能移动,则另一名玩家获胜。若两方都按最优方案操作,求最终是先手获胜还是后手获胜还是平局。 首先,若当前棋子所在的结点出度为 \(0\),则先手必败。 很容易想到,若某个状态能转移到 阅读全文
摘要:
简介 我们知道哈希就是把一个字符串转化为一个数字。但普通的哈希是有顺序的,而如果我们想判断两个集合是否相同,就需要使用异或哈希了。 思路 异或哈希,就是把每一种值映射到某一个随机数上,再把它们异或起来。因为异或具有交换律,所以可以比较集合。 但我们怎么保证异或哈希的正确性呢? 假设我们随机的值域为 阅读全文