摘要:
值得一做的数数题(容斥原理,状压DP,子集卷积) 我们要求准确的生成串为 \(s\) 的方案并不好做,考虑转换为求高维前缀和,然后用容斥还原。 这样 \(s_i=1\) 表示必须有边,\(s_i=0\) 表示无限制。 对于任何一个串 \(s\),我们将必须有的边连起来,会得到若干个单链,现在我们要求 阅读全文
摘要:
敢想敢写。。。 我们直接定义状态 \(f_{i}\) 表示数 \(i\) 能否被表示出来。 然后我们枚举最低位 \(a_x\),如果 \(k | (i - a_{x})\) 就可以从 \(f_{(i - a_{x}) / k}\) 转移到 \(f_{i}\)。因为次低位一定是 \(k\) 的倍数,所 阅读全文
摘要:
非常神的 DP 思维题。 不难想到我们枚举有哪些牛没有匹配,如果牛 \(i\) 没有匹配,那么所有 \(\ge s_i\) 的 牛棚 \(t_j\) 必须匹配。 所以我们只关心最小的没有被匹配的牛。 接下来是这题最关键的一步,我们把牛和牛棚放到一起排序。 因为我们只关心相对大小,放到一起后可以极大程 阅读全文
摘要:
如果不考虑 \(A_i\neq A_j\) 的条件非常好做,不难想到将这个条件容斥掉。 这等价于从 \(\dfrac{N(N - 1)}{2}\) 个二元组中钦定一些使得对应两端相同,表现在图中就是求连通块个数和对应的 \(\rm lcm\)。 所以我们不难设计 DP,\(f_{S}\) 表示集合为 阅读全文
摘要:
我们将每个回文串作为一个节点,如果 \(T\) 是 \(S\) 的子串,就连一条有向边 \(S\to T\),最后我们可以得到一个 DAG。 然后我们要选出最多的节点使得不存在一个节点能到达另一个节点。 首先我们直到节点数是 \(<2|S|\) 的,因为本质不同的回文串只会在 manacher 算法 阅读全文
摘要:
我们先求个前缀和 \(s_i = \bigoplus\limits_{x = 1}^ix\),问题转化为求满足 \(L - 1 \le l < r \le R\) 且 \(s_r \oplus s_l = V\) 的二元组 \((l,r)\) 个数。 对于 \(s_i\),不难发现以 \(4\) 为 阅读全文
摘要:
My Blog T1 直接从 \(1\) 到 \(n\) 枚举每一位能填的最小数,可以做到 \(\mathcal{O}(N^2)\) 复杂度。 这本质上是求满足当前数小于前缀最大数的位置,考虑线段树,支持单点修改和整体查询。线段树每个节点维护两个 set,\(s\) 和 \(t\),分别表示区间中可 阅读全文
摘要:
Minecraft Forever 阅读全文
摘要:
小清新 DS 题。 首先考虑怎么求 $x =0 $ 的情况。一个方法是以建立线段树的方式分治。 我们将 Trie 和线段树结合,构建一颗 trie - tree。其中树上的一条边和 trie 相同表示 \(0/1\),每个节点表示一个区间。 如果我们异或 \(2^k\),等价于把深度位 \(k\) 阅读全文
摘要:
显然有 \(F_n = f_{n - 1}a + f_{n}b = km\),转化一下得 \(-\dfrac{a}{b}\equiv \dfrac{f_{n}}{f_{n - 1}}\pmod m\)。 如果 \(m\) 是质数,我们直接预处理将等式右边塞到桶里,对于询问直接在桶里查询即可。 但是 阅读全文