摘要:
"传送门" 解题思路 异或最大值肯定线性基了,树上两点那么就倍增搞一搞,就维护每个点到各级祖先的线性基,时间复杂度$O(nlog^3n)$,并不知道咋过去的。 代码 cpp include include include include include include using namespace 阅读全文
摘要:
"传送门" 解题思路 首先对于一个$a$来说,要求$b$和$c$,那么$a,b,c$一定在一条链上。把$b$分类讨论,如果$b$是$a$的祖宗,这个方案数就很好统计了,就是$c$在$a$的子树里随便选,产生的贡献为$(siz_a 1) (min(k,dep_a))$。如果$b$是$a$的儿子,那么就 阅读全文
摘要:
"传送门" 解题思路 首先可以想到要预处理一个$nxt_i$和$pre_i$,表示前后与当前位置权值相同的节点,那么这样可以迅速算出某个点在某段区间是否出现多次。然后这样的话就考虑分治,对于$[L,R]$来说,如果当前点$i$满足$nxt_i R$,$pre_i include include in 阅读全文
摘要:
"传送门" 解题思路 弦图就是图中任意一个大小$ =4$的环至少存在一条两个节点不相邻的边,这样的图称为弦图,弦图有许多优美的性质。一个无向图是弦图当且仅当它有一个完美消除序列,完美消除序列就是一个点的排列满足$v_i$与$v_{i+1}..v_n$之间所有的边连上后的图是一个团。用最大势算法可以在 阅读全文
摘要:
"传送门" 解题思路 平面图转对偶图,然后跑最短路。 代码 cpp include include include include include include include using namespace std; const int N=1405; inline int rd(){ int 阅读全文
摘要:
"传送门" 解题思路 看到度数和生成树个树,可以想到$prufer$序,而一张规定度数的图的生成树个数为$\frac{(n 2)!}{\prod\limits_{i=1}^n(d(i) 1)!}$。而这道题有的度数没有限制,那就设有度数限制的点的个数为$num$,$\sum (d_i 1)$为$su 阅读全文
摘要:
"传送门" 解题思路 以每个颜色为根开一棵权值线段树,下标就是$dfs$序,其余都是基本操作,要动态开点。 代码 cpp include include include include include using namespace std; const int N=100005; const in 阅读全文
摘要:
"传送门" 解题思路 首先需要预处理两个串$nxt(i)(j)$表示i位置之后最近的$j$。 第一问直接对$b$建后缀自动机,枚举$a$的起点暴力匹配。 第二问枚举$a$的起点,$b$用$nxt$跳。 第三问$a$与$b$一起跳,$b$用后缀自动机,$a$用$nxt$。 第四问$a$与$b$一起跳, 阅读全文
摘要:
"传送门" 解题思路 因为叶节点不超过$20$个,所以可以枚举这些叶节点,并把这些节点当做根扫整棵树。可以证明所有的子串一定可以被便利到,然后可以对这些串建广义后缀自动机。$dfs$的时候要记录一下上一个节点后缀自动机中的标号,从这个标号开始建后缀自动机。 代码 cpp include includ 阅读全文
摘要:
解题思路 对于一段区间考虑每条边的贡献,即$ans=\sum\limits_{i=l}^{r 1}(i l+1) (r i) w(i)$,把这个暴力展开,得到一个关于$i$的多项式,然后发现只需要维护$\sum a(i)$,$\sum a(i) i$和$\sum a(i) i^2$,线段树维护即可。 阅读全文