The 3rd ucup: Hangzhou

杭州站:

冠军:思路打开。亚军:World.search(you)。季军:躺在沙发上变成没知觉的植物沉入泥中蝶泳。计算打星队后的冠军:学军信友队一队。

金牌:6题495。银牌:5题720。铜牌:4题739。总体看上去区分度不是很高。

vp 总结:大概打了不到四个小时,单挑通过了 AEFHKM 六题,同时除了 F 思考时间超过 10min 外,其余题目思考时间均不超过 10min,目测若参加正式赛可以单挑金牌。若时间打满目测可以通过 B 题。

通过顺序:FEAKMH。做题顺序:BEFAHKM。

E

不妨将所有区间按照右端点排序,不难发现若到达了 \(a_n\),则所有区间都可以花费 \(0\) 的代价到达。找到达 \(a_n\) 这一过程可以直接找后缀左端点最小值维护。时间复杂度 \(O(n)\)

F

如果考虑对于任意一个排行榜从低向高连边,那么对得到的图缩 scc,若两个点在同一个 scc 内则会被统计。

这个东西并不是很好统计。继续考察原图的性质。不难发现对于一段询问区间 \((id,l,r)\),一定存在的可达性是对于 \(i<j\)\(i\) 一定能到达 \(j\)。现在只需判断 \(j\) 能否到达 \(i\),这需要对原图进一步观察。

引理:对于任意排行榜 \(id\) 上的任意一个位置 \(i\)\(i\) 能到达的位置是该排行榜的一段后缀。

不难发现显然。

根据该引理,我们只需维护 \(i\) 能到达的最小位置即可。考虑从前往后递推,显然若存在 \(j<i\)\(i\) 强于 \(j\),则 \(i\)\(j\) 能到达的最小位置相同。于是我们只关心在 \(1\sim i-1\) 中是否存在弱于 \(i\) 的位置,考虑进一步刻画这个条件,实际上等价于判断是否所有排行榜都满足 \(1\sim i-1\) 位置组成的不可重集相同。证明略去。

因此直接维护即可求出能到达的最小位置。考虑回答询问,写出答案的形式为 \(\sum\limits_{i=l}^r i-\max(l,f_i)=\sum\limits_{i=l}^r i-\sum\limits_{i=l}^r\max(l,f_i)\),后者可以分块简单维护,时间复杂度 \(O((n+q)\sqrt n)\)

赛时为了卡空间注释了 #define int long long,最后统计答案的时候没开 ll,罚了八发。

A

直接并查集维护即可。

H

考虑将所有重链按照长度排序。若不存在多条最长链,则下面的构造方法是自然的:

将每条重链挂到最长链的某个地方。

考虑若存在多条最长链,给出无解的条件:存在至少两条最长链且次长链的长度 \(\ge\) 最长链的长度 \(-1\)。因此对于有解的情况将其余最长链挂到第一条最长链的第一个点即可。注意特判只有一条链的情况。

K

直接维护。

M

考察对序列的判定。显然最小值应该是所有数的因子,不难发现建出小根笛卡尔树后根应该是子树所有数的因子。判掉所有数都相同的情况。对于其余情况,考察最小值和次小值之间的差 \(del\),显然新的最小值一定是 \(del\) 的因子,这个的数量只有 \(O(\sqrt[3]del)\) 个,暴力枚举后建笛卡尔树判断即可,时间复杂度 \(O(n\sqrt[3]V)\)

B

线段树维护,不需要任何脑子。

posted @ 2025-02-19 09:45  BYR_KKK  阅读(57)  评论(0)    收藏  举报