摘要:
一个笔记需要一张头图: Trie 树是一种维护(广义)字符串(我们认为广义字符串是一切可以被线性描述的类型,例如,我们认为整数(无论是哪种进制下)是一种广义字符串;有理数也是一种广义字符串(使用无限循环小数方式表述,可能需要一些特殊处理。))的数据结构,其特征为适于处理前缀类型或寻找类型(i.e. 阅读全文
摘要:
P5268 [SNOI2017] 一个简单的询问 题解 不妨把每个区间表示成 \(|V|\) 维向量 \(b\) 的形式,其中 \(b[i]\) 为在区间 \([l,r]\) 中,\(i\) 出现的次数。 然后我们发现要求的实际上是 \(a \cdot b\)。 拆一下(这里用 \(g(i)\) 表 阅读全文
摘要:
闲话 排查许久后发现: int vis[20000010] -> ac long long vis[20000010] -> mle 并且开了 dill 所以查了挺久。 一个诡异的 bug 是: ...; debug(f, g) -> ac ...; -> wa 最后发现 vector resize 阅读全文
摘要:
例题 P7831[COCI2009-2010#3] PATULJCI 题解 首先对每个颜色开一个vector<int>保存其位置,随后对于一段区间\([l,r]\)和一个颜色\(c\),可以很快速的求出\([l,r]\)内\(c\)出现的次数。 然后进行随机化,每次随机一个元素并查看他的出现次数。 阅读全文
摘要:
P7831[CCO2021] Travelling Merchant 题解 考虑出度为0的点显然不行 随后,进行一个类似于拓扑排序的过程即可 注意到需要建反图 原图也得保留 注意判-1 代码: #include<iostream> #include<algorithm> #include<cstri 阅读全文
摘要:
定义 树的直径定义为树上任意两点间最长的简单路径 求法1:两次dfs 适用范围:树上所有边边权都非负 算法过程: 以树上任意一点开始第一次dfs,找到距其最远的点\(z\),再以\(z\)为起始点进行第二次dfs,找到距其最远的点\(z\prime\),则\(zz\prime\)即为所求。 代码: 阅读全文
摘要:
P5239回忆京都 题解 组合数递推公式递推出前1000*1000项组合数。 预处理一下前缀和。 \(O(1)\)回答。 代码: #include<iostream> #define int long long using namespace std; int C[1010][1010],s[101 阅读全文
摘要:
P6273[eJOI2017] 魔法 题解 考虑定义\(S_{r_k} = \Sigma_{i = 1}^{r}[s_i = k]\),那么对于任意一个子串\([l,r]\),其为有魔法的子串的充要条件为\(S_{c_{r}} - S_{c_{l - 1}}\)对于任意的,在\(s\)中出现了的\( 阅读全文