06 2020 档案
摘要:我来啦我来啦 题目要求求好几个串串的 由于串串的数量并不多,所以我们把它们塞到一个里面,中间加上分隔符号。 那么答案就是最深的且它的子树中具有所有分节符的非叶子节点。 至于分节符数量和种类,用前缀和即可。 介于$\t
阅读全文
摘要: 题目要求找到两个串的最长公共子串。 我们将两个串中间和末尾插入终止符,并弄到一棵后缀树上去。 然后我们发现,对于一个叶子节点,它属于哪个子串,我们只需要找到它的父边上第一个出现的终止符属于哪个边
阅读全文
摘要:#include<bits/stdc++.h> using namespace std; const int MAXN=1e6+10; typedef long long ll; char s[MAXN]; int n,siz[MAXN<<1]; ll ans=0; const int inf=1e
阅读全文
摘要:序列,是树与序列的一种双射。 ##构建过程: 每次找到一个编号最小的叶子节点,将它删掉,并将它所连接的点的度数,且加入序列。 重复上述步骤,直到只剩下两个点。 ##实现: 考虑如何实现。 最朴素的显然每次暴力找,复杂度显然不够优秀。
阅读全文
摘要: 把奶牛的忍耐度转化为线段,则题目转化为选择一些点使得覆盖的线段尽可能多。一个点只能覆盖一条线段。 考虑将点按照位置排序,线段按照右端点排序。排序后显然线段的最低耐受程度是递增的,那么我们显然用位置最靠左的点最优,因为以后它一定覆盖不了其它的
阅读全文
摘要:Link 回顾一下游戏那个优美结论的 将所有石子数量异或起来,若和为则必败,否则必胜。(先手) 那分以下情况考虑: 首先是全此时必败,显然异或和为. 然后是异或和不为的状态:那我们必定可以找到一个,
阅读全文
摘要:Link 讲实话这题有点烦,不知道为啥改了下就过了……原版本好像没啥错啊…… 其实对于子树问题,我们求出原来树的序列,则可以将它转化为一个序列问题。注意题目中说的是有根树,以为根。 那么,我们一遍求出序列后,
阅读全文