摘要:
子集卷积: $$C[k]=\sum_{{i \And j=0},{i|j=k}} A[i] B[j]$$ 很明显,i|j=k 的部分很像 FWT。加上限制条件“$i\And j=0$”后,等价于 $c(i|j)=c(i)+c(j)$,因此多加一维记录子集大小($c(x)$)。 $$h_i=\sum_ 阅读全文
摘要:
概述 FWT 常用于解决以下式子的 $O(n\log n)$ 求解: $$C[k]=(A*B)[k]=\sum_{i\oplus j=k}A[i]B[j],\text{where }\oplus=\text{and/or/xor}$$ FWT 的思路和 FFT 类似,先将多项式 $A,B$ 转化为一 阅读全文
该文被密码保护。 阅读全文
摘要:
写这篇题解很有挑战性啊,两黑一紫,黑题还是看着玄乎的题解和玄乎的 std 做的。不过还是整理一下的好。 A. Sleeping Cows P 还没做,今天做完再写 B. Spaceship 有一个 $N(N\le 60)$ 个点的有向图(用邻接矩阵给你了)。给你 $Q(Q\le 60)$ 次独立的询 阅读全文
摘要:
link 首先这个题没有刻意卡错解,所以有一种解法就是,设一次性可以炸 l~r,那么用 l~r 内的 f 来更新 f[i],其中 (pair<int,int>)f[i] 表示维护的 i 的能炸区间。从左到右来一次,从右到左来一次,再重复一次,就 AC 了;当然,如果是 CF 肯定过不了。 正解有两种 阅读全文
摘要:
https://www.luogu.com.cn/problem/P6114 #include <bits/stdc++.h> using namespace std; const int N=5e6+5; char s[N]; int n,ans; int main(){ scanf("%s",s 阅读全文
摘要:
构造 有两个空根 0 和 1,分别是偶根和奇根。以偶根为根的树存储所有偶数长度的回文串,奇根同理。 因为 Lemma. 「$s$ 的本质不同回文子串总数是 $O(n)$」,所以存得下。 Proof 设以 $i$ 为尾的最长回文子串左端是 $l_i$,加入 $s_{i+1}$ 后,得到了 $l_{i+ 阅读全文
摘要:
规定字符串下标从 0 开始。 $z[i]$ 表示从 $i$ 开头的最长子串使得该子串为 $s$ 的前缀。 特别地,$z[0]=0$。 求法 类似 manacher,维护 $r=\max {i+z[i]-1}$ 以及它对应的 $l=i$。 借助之,我们从 $1\sim n-1$ 枚举 $i$。 若 $ 阅读全文
摘要:
多用于在线解决:在一个图中只能走 $\le/\ge/</> l$ 的边,从 $u$ 出发,所能到达的点,针对它们进行的一系列询问。 Kruskal 重构树是基于 Kruskal MST 算法生成的一棵含有 $n+m$ 个节点的点带权二叉树,有 $n$ 个叶子,分别对应原 $n$ 个节点;它可以让从 阅读全文
摘要:
Note:为了避免spfa被卡,我发现动点dij也是行的! 流程 按照一定的顺序逐一将边加入图,用 spfa 维护图的动态 $dis$。当然最短路是广义的,可以是瓶颈路等。 具体来说,每次加边就把边的两端加到 queue 中,不清空 $dis$,跑一遍 spfa。 由于是按照一定顺序加边的,可以钦定 阅读全文