2021/11/17 & 2021/11/18 集训补题

/kk,要退役了,最后2天还是象征性地记录一下考试补题吧。/kk

2021/11/17 T1 春节十二响

link

Solution

考试的时候想了1个半小时,感觉自己智商下降地越来越快了。/kk

我们发现我们直接树上启发式合并就做完了,因为子树之间互不影响,而你子树的根也不能和子树内的点放在一起。

复杂度是 \(\Theta(n\log^2 n)\) 的。

2021/11/17 T3 Severus

link

Description

有一个 \(n\) 的个点的树,有 \(m\) 次操作,每次为以下两种之一(集合为可重集):

  • \(u\to v\) 的路径上的每个点的集合都加入 \(w\)

  • 求给出 \(k\) 个点虚树上所有点的集合的并的权值之和。

\(n,m\le 10^5,\sum k\le 5\times 10^5\)

Solution

很愚蠢,但是我又没有看出来。/kk 真的要退役了

我们可以发现的是,两个路径的交点一定包含两者中的一个 lca,然后我们就做完了。注意 \(\sum k\) 只能带一只 \(\log n\)

umi

link

Description

定义一个序列为好的,当且仅当一个颜色都在同一个段里面。

给你一个序列,每次操作你可以将某颜色 在序列上的所有位置改成另一颜色,使得最终序列是好的。

我们定义代价为最终序列与原序列不同的位置数量(不是操作次数)。

\(T\) 次询问,每次将一个位置进行修改,问修改后的答案。

\(n\le 2\times 10^5\)

Solution

我们发现对于颜色 \(c\) 求出出现左端点 \(l_c\),出现右端点 \(r_c\),那么区间 \([l_c,r_c]\) 必定被染成相同颜色。

我们设 \(b_i\)\(i,i+1\) 都被 \([l_c,r_c]\) 都被包含的 \(c\) 的个数。那么 \(b_i=0\) 的时候 \(i\) 一定是一个相同颜色区间的右端点。而一个区间的贡献就是大小减去出现次数最多的颜色的出现个数。前者综合为 \(n\),我们直接求后者即可。

我们将 \([l_c,r_c]\)\(c\) 的出现个数赋值到 \(l_c\) ,那么,一个区间的贡献就是区间值的最大值,也即是说,我们求出 \(b_i=0\) 的两者之间的最大值之和即可。

考虑怎么维护,实际上我们可以维护区间 \(b_i\) 最小值,值的最大值,最左边最小值及左的值的最大值,最右边最小值及右的值的最大值,以及会产生的贡献和。

复杂度 \(\Theta(n\log n)\) 的。

原文地址:https://www.cnblogs.com/Dark-Romance/p/15573904.html