2025.4.10 CWOI 模拟赛题解

T1 天才俱乐部

唐题,但是因为没有特判挂了 \(\textcolor{red}{100}\) 分,想让出题人飞起来。

我们可以把取模换一种方式表达,\(x \bmod k = x - k \lfloor \frac{x}{k} \rfloor\),所以:

\[\sum (a _ i \bmod k) = \sum (a _ i - k \lfloor \frac{a _ i}{k} \rfloor) = \sum (a _ i) - k \sum (\lfloor \frac{a _ i}{k} \rfloor) = s \\ \Rightarrow k \sum (\lfloor \frac{a _ i}{k} \rfloor) = sum - s \]

\(sum - s\) 分解因数,暴力判断就好了,记得判断 \(sum \lt s\)\(\textcolor{red}{sum = s}\) 的情况,出题人在每一组数据都放了 \(sum = s\) 的情况导致挂完。

T2 实战教学

看见最大值最小,考虑二分。

先二分一个答案 \(x\),考虑怎么 check

我们先按照 \(a\) 从大到小排序,因为能够选择的 \(j \gt i\) 一定满足 \(b _ j \le x - a _ i\),所以 \(i\) 能够选择的一定比 \(i + 1\) 少,因此考虑 \(i\) 可以不用管后面的。

因为对 \(i\) 的限制是越来越宽松的,所以我们可以直接选择满足条件的 \(a _ j\) 最大的那个 \(j\),可以直接线段树维护。

时间复杂度 \(\Omicron(n \log ^ 2 n)\)

T3 穿越银匙之门

爆黑了,原题是 AGC027F

无根树不好做,考虑选择一个根。这样,需要被操作的点,在两棵树中的父亲一定不同,于是根据这个关系连边跑拓扑排序就好了。

但是这样是错的只有 40 分。你猜出题人为什么在一档部分分明确写了答案不等于 \(n\),那说明答案可以等于 \(n\)

那差的那一次在哪呢?我们钦定了根节点,那根节点一定不会动,但是有可能根节点需要先动一次。那我们可以枚举第一次操作,然后再跑上面的。

时间复杂度:\(\Omicron(Tn ^ 3)\)

代码这得贴一个,很不好写,Link

T4 绳网委托

看到 HDoG 的 1.3K 的 pushup 就直接不想改了。

posted @ 2025-04-11 14:59  xguagua_233  阅读(22)  评论(0)    收藏  举报