摘要: 图论 SCC void tarjan(int u) { static int top = 0; low[u] = dfn[u] = ++tim; stk[++top] = u; in[u] = 1; for (int i = G1.head[u]; i != -1; i = G1.nxt[i]) { 阅读全文
posted @ 2021-04-07 08:02 关怀他人 阅读(225) 评论(0) 推荐(0)
摘要: CF 666E Solution 首先对$T_i$建出广义SAM,预处理出$S$的前缀$S[1...r]$S在SAM里能匹配上的最长后缀的长度以及它匹配到的位置,每次查询的时候从$S[1...r]$匹配到的位置开始,在parent树上倍增,找到$len$最小的节点,使得$len_u \geq r-l 阅读全文
posted @ 2021-02-08 13:53 关怀他人 阅读(192) 评论(0) 推荐(0)
摘要: 多项式 预备知识 多项式的表示方法 系数表示法 将$n$次多项式$A(x)$的系数$a_0,a_1,⋯,a_n$看作$n+1$维向量$\vec =(a_0,a_1,⋯,a_n)$其系数表示就是向量 $\vec$点值表示法 点值表示法 选取$n+1$个不同的数$x_0,x_1,⋯,x_n$对多项式进行 阅读全文
posted @ 2021-01-23 21:21 关怀他人 阅读(217) 评论(0) 推荐(0)
摘要: ARC 096D Solution 首先不难发现$p_i$构成了一个树形结构,可以转化为每个点的代价是子树里所有点的$m_i$之和,价值是子树的节点个数,$1$号点可以选任意个,其他点最多选$d$个,求最大价值。 先考虑一个贪心,记$w_i$为代价,$v_i$为价值,先把所有点按$\frac$从小到 阅读全文
posted @ 2020-12-29 14:35 关怀他人 阅读(177) 评论(0) 推荐(0)
摘要: AGC 023E Solution 首先考虑如何计算排列$p$的个数,设$cnt[i]$表示$a_j\geq i$的个数,那么满足条件的排列$p$的总数$tot$就是$tot=\prod cnt[i]−(n−i)$,这是因为考虑从$n$开始填数,对于每个数字$i$,它一共有$cnt[i]$个位置可以 阅读全文
posted @ 2020-12-21 09:13 关怀他人 阅读(189) 评论(0) 推荐(0)