CF204 合集

云落碎碎念

  1. 题面翻译取自 luogu,本蒟蒻也会安置原题链接
  2. 不保证文章中不出现“显然”或者“注意到”,可能会出现“易证”
  3. 有写错的地方欢迎各位神犇指正

前言

你在我的时间轴上,是一段有后效性的前缀

CF204A

题解

题目传送门

前缀差分,直接做

细节处理

注意最高位不要溢出

CF204B

题解

题目传送门

考虑对颜色开个桶,对于所有有能力成为绝对众数的颜色,统计答案

细节处理

正反面颜色相同的部分在桶中只计算一次

CF204C

题解

题目传送门

披着字符串题面的 DP 题

我们枚举 \(i,j\),并钦定 \(x_i=y_j\),统计哪些子串会给出 \(x_i=y_j\) 的贡献,形式化表示出来,有:

\[\sum_{i=1}^{n} \sum_{j=1}^{n} \min(i,j) \times \min(n-i+1,n-j+1) \times [x_i=y_j] \]

这玩意是 \(O(n^2)\) 的,然而可以维护前缀桶和后缀桶,即记录 \(pre_{i,c}\) 表示前缀 \([1,i]\) 中所有满足 \(x_i=c\)\(i\) 的和,\(suf\) 同理

优化一下就 \(O(n)\)

细节处理

又是被 2000 分薄纱的一天

CF204D

题解

题目传送门

简单 DP,要是 NOIP 或者 CSP 出这种题就可以笑出来了

\(f_i\) 表示第 \([i-k+1,i]\) 为第一次出现连续的 B 的方案数

显然 \([i-k+1,i]\) 的填法已经固定,所以考虑前缀 \([1,i-k]\) 的填法

正难则反,直接用随便填的方案数刨去在前缀已经合法的。总方案数记为 \(tot_i\),已经合法的记为 \(g_i\),有转移

\[\begin{aligned} tot_i = tot_{i-1} \times ([s_i=\texttt{X}]+1) \newline g_i=g_{i-1} \times ([s_i=\texttt{X}]+1) + f_i \end{aligned} \]

其中 \([s_i = \texttt{X}]\) 表示字符串的第 \(i\) 位是否为字符 X

\(f\) 的转移如果是简单的 \(f_i=tot_{i-k} - g_{i-k}\) 就 WA 了

因为你还得保证对于 \(\forall j \in [i-k+1,i-1] ,\ s[j-k+1...j]\) 不是全 B

所以还需要刨去上述的方案,即 \(\sum_{j=i-k+1}^{i-1} f_j\),结合前面的分析,\(f\) 的转移形如

\[f_i = tot_{i-k} - g_{i-k} -\sum_{j=i-k+1}^{i-1} f_j \]

前缀和优化一下可以做到线性,对于 W 来说,反着做一遍类似的事情就可以了

答案也是好维护滴!

细节处理

感觉没什么,需要什么信息就记录,然后跟着 \(f\) 转移就好了

CF204E

题解

题目传送门

无聊题,广姓算法加线段树合并

细节处理

后记

考虑时光倒流,我可以维护你出现的时间戳

完结撒花!

posted @ 2025-10-21 22:28  sunxuhetai  阅读(1)  评论(0)    收藏  举报