Codeforces Round 874 (Div. 3) 题解

发布时间 2023-08-11 21:31:28作者: cantorsort2919

A. Musical Puzzle

字符串 \(s\) 的不同的长度为 \(2\) 的子串个数就是答案

可以用 set 处理

B. Restore the Weather

\(a\) 数组排序后,在 \(b\) 数组中找到第一个大于等于 \(a_i-k\) 的元素与 \(a_i\) 对应即可

可以用 multiset 实现(用 multiset 自带的 lower_bound() 比较好,据说用外部的 lower_bound() 来求时,复杂度是 \(O(n)\)

C. Vlad Building Beautiful Array

显然,只有减去奇数才能改变奇偶性

那么我们预处理出最小奇数,然后拿每一个偶数去减它,如果变成负数就无解;反之有解

D. Flipper

我们肯定优先让 \(n\) 在最前面,若 \(n\) 已经在最前面,则让 \(n-1\) 在最前面

因此翻转区间右端点 \(r\) 已经固定,枚举左端点 \(l\) 的位置取字典序最大即可

E. Round Dance

把关系看成边,显然每场舞会其实就是一个环,所以其实我们只需要判断最少/最多可能存在多少个环即可

用并查集维护一下有多少个连通块,并且维护每个连通块中有多少个点和多少条边,注意处理重边

如果点数等于边数,那么这个连通块就固定了,一定就是这些点

否则连通块就是一条链,点数等于边数加一,可以是每条链都自成一个环也可以是所有链链接一起形成一个环,记得特判一下链数为 \(0\) 的情况

F. Ira and Flamenco

显然子序列从小到大排序后在数轴上连续,统计原数组中出现的元素与元素出现次数,记 \(a_i\) 为去重后第 \(i\) 小的元素,\(b_i\) 为原数组中 \(a_i\) 的出现次数

\(a_{i-m+1}=a_i-m+1\) 时,区间 \([i-m+1,i]\) 满足条件

维护 \(b_i\) 前缀积即可

G. Ksyusha and Chinchilla

(待补)