Codeforces Round 962 (Div. 3) Solution

A. Legs

显然地,我们想尽可能多的使用牛。

所以当 \(n\)\(4\) 的倍数时,全都使用牛,否则使用一只鸡,剩下的使用牛,AClink

B. Scale

我们只需要对每个小矩阵中取一个值输出即可,AClink

C. Sort

如果 \(\mathrm{sort}(a[l..r])=\mathrm{sort}(b[l..r])\), 那么说明 \(a[l..r]\) 中每个字母的个数和 \(b[l..r]\) 相等,所以想让 \(\mathrm{sort}(a[l..r])=\mathrm{sort}(b[l..r])\) 的操作数,也就是每个字母在 \(a[l..r]\)\(b[l..r]\) 中的差的和。

使用前缀和来快速的求 \(a[l..r]\)\(b[l..r]\) 中每个字母的个数,时间复杂度 \(\Theta(Tn)\)AClink

D. Fun

假设我们确定了未知数 \(a,b\) 的值,那么这个问题是好做的。

容易得到:\(\left\{\begin{matrix} c \le x-a-b \\c\le \dfrac{n-ab}{a+b} \end{matrix}\right.\),所以答案等于 \(\min\{x-a-b,\left \lfloor\dfrac{n-ab}{a+b} \right \rfloor \}\)

我们尝试枚举所有可能的 \(a\),发现此时的 \(b\) 需要满足 \(b\le\min\{\dfrac{n}{a},x-a\}\)。事实上,我们可以据此来枚举所有的 \(b\),并根据上述分析计算所有的 \(c\)。当 \(n,x\) 均为 \(10^6\) 时,即使每次只使用 \(\left \lfloor\dfrac n a \right \rfloor\) 来枚举,那么共进行 \(13970034\) 次枚举,实际的操作会取一次 \(\min\),所以实际操作数会小于这个值,这个复杂度是我们可以接受的,AClink

E. Decode

我们记一个前缀和数组 \(pre\),如果 \(a_i=1\),那么 \(pre_i=pre_{i-1}+1\),否则 \(pre_i=pre_{i-1}-1\)。那么如果 \(a[l..r]\) 中的 \(01\) 数量相等,当且仅当 \(pre_r-pre_{l-1}=0\) 时,即 \(pre_r = pre_{l-1}\)

计算子串的子串中含有 \(01\) 相等的数量很难,我们可以先找到所有 \(01\) 相等的子串,再统计包含它们的子串的数量。

如果 \(x,y\) 满足 \(pre_{x}=pre_y\),那么 \(a[x+1..y]\) 中有相同数量的 \(01\),包含它的子串共有 \((x+1)(n-y+1)\) 个。

记所有满足 \(pre_{x}=pre_y\)\(y\) 分别为 \(y_1,y_2,\cdots,y_k\),那么这部分的答案为 \((x+1)(n-y_1+1)+(x+1)(n-y_2+1)+\cdots+(x+1)(n-y_k+1)\),即 \((x+1)(nk-\sum y_i+k)\),所以我们可以记录所有 \(y_i\) 相等的 \((n-y_i+1)\) 的和,然后乘 \((x+1)\) 更新答案,AClink

#F. Bomb

先不考虑时间复杂度,由于每轮操作相互独立,所以有一个显然的贪心:每轮取所有元素中最大的计入分数,并将其设为 \(\max\{0,a_i-b_i\}\)。我们可以使用优先队列来维护,时间复杂度 \(\Theta(Tk\log n)\)

考虑当 \(k\) 很大的时候,执行上述贪心,此时所有的 \(a_i\) 应该近似相等,不会出现一个数特别大的情况。考虑找到一个最大的 \(x\),使得在执行 \(k\) 步操作后,对于所有 \(i\)\(a_i \ge x\),这部分可以使用二分。根据 \(x\) 计算出所需的最小的步数 \(t\),然后使用 \(k-t\) 执行上面的贪心,时间复杂度 \(\Theta(Tn\log k)\)

#G. Penacony

我们发现一定有一段路可以不被使用。我们可以尝试枚举这段不被使用的路,这样一个环就变成了一条链,所有要求连接的点的路径全都可以确定了。所以我们可以维护一个序列,把要求的路径 \(+1\),最后统计其中含有 \(0\) 的数量,可以使用线段树来维护。

枚举所有不被使用的道路,并计算其中 \(0\) 的数量。我们可以快速根据前一个的不被使用的道路来更新目前枚举的道路,时间复杂度 \(\Theta(Tn \log n)\)AClink

posted @ 2024-08-09 22:27  CreeperBlog  阅读(39)  评论(0)    收藏  举报