CSP-S 2023 题解

发布时间 2023-10-22 11:52:09作者: FOX_konata

expect: \(100+100+65+25=290\)

真实: \(100+85+0+15=205\) , rk62

感觉自己考的好烂好烂好烂

T4 这么简单竟然想不出来,感觉如果自己不被 T4 吓到,全做出来其实有望 365+ ?

今年 CSP-S 怎么这么简单吓得我不敢做了

T1

暴力

T2

考场做法:

\(lst_i\) 表示 \(a_i = a_{lst_i}\) 并且 \((lst_i, i)\) 中所有数都可以通过若干次操作消除的最大的 \(lst_i\) ,如果没有则为 \(0\)

\(res_i\) 表示以 \(i\) 结尾的答案

对于一次记录答案,让 \(j = i-1\) ,然后一直让 \(j = lst_j - 1\) 直到 \(a_j = a_i\) 位置或者 \(j \leq 0\) ,然后把 \(res_i = res_{j-1} + 1\)\(lst_i = j\)

复杂度 \(O(n \Sigma)\) ,其中 \(\Sigma = 26\)

被卡满的数据: aaaaabbbbbbccccccddddd.....zzzzzz

考试数组 \(2e6 \rightarrow 2e5\)\(100 \rightarrow 85\)

T3

傻逼大模拟,暴力就是了

考试时发现大样例没有一个特殊性质 ABC 的什么意思?

T4

考试的时候没想出来非常非常惭愧

考试时想到了二分答案,想到了求出每个点的最早时间,但没有发现从最早的开始做就行,而是以为要按照他们的时间 \(-\) 距离最近标记点的距离排序,然后以为又要什么高级 dp ,遂只写了链 and 菊花,但考试最后貌似也写寄了

我们发现只要每次选最早的做即可,因为我们提前做完它后用剩下的时间再做别的,这等价与先做别的再恰好卡常把这个任务做完

怎么找到最近距离 + 染色?树链剖分?这么想就太 naive 了!

直接暴力染这个点一直走父亲直到遇到标记点即可。每个点最多被染 1 次,复杂度 \(O(n)\)

如果你二分求每个点最晚完成时间,并且对每个点时间排序,复杂度是 \(O(n \log n \log A)\)

但我们可以直接用数学方法求出每个点最晚完成时间,记作 \(t_i\) ,发现 \(t_i > n\) 的一定可以完成,因此只需对 \(t_i \leq n\) 的桶排即可,复杂度是 \(O(n \log n)\)