摘要:
题解 做后缀自动机题要一点脑洞,脑洞一开,就过了 我们显然要拿第二个串跑第一个串的后缀自动机 我们可以求出第二个串每个位置匹配到的节点,和匹配的长度L 那么我们统计一个后缀树上的根缀和,表示这样个节点的路径字符串的所有后缀在串中出现过多少次(路径字符串就是根到这个点的路径中等于这个节点len值的串) 阅读全文
摘要:
题解 dp[i][j][S]表示区间[i,j]内剩余的数位状压后为S的最大值 这样转移起来不就是$n^3 2^8$了吗 冷静一下,我们可以发现一段区间内剩下的数位的个数是一定的,也就是我们可以在枚举位数上减少一定复杂度 我们转移的时候枚举一个末尾,也就是 $dp[i][j][S] = dp[i][k 阅读全文
摘要:
题解 我对莫队真是一无所知 这个东西显然可以用圆方树转成一个dfs序列 然后呢,用莫队计算每个询问区间的每个数出现的次数,从而顺带计算每个数字的奇偶性 但是我们要查的数字也用一个范围,可以直接用分块维护,修改$O(1)$查询$O(n)$ 代码 cpp include define enter put 阅读全文
摘要:
题解 水题,可惜要写高精度有点烦 一看障碍物的摆放方式和最后的答案没有关系,于是干脆不读了,直接二项式反演可以得到 设$g_k$为一种摆放方式恰好占了k个障碍物 $f_k = \sum_{i = k}^{n} \binom{i}{k} g_{i}$ 可以得到 $g_0 = \sum_{k = 0}^ 阅读全文