Loading

第十一届中国大学生程序设计竞赛网络预选赛(CCPC Online 2025)

比赛链接

Review

每题写的都很难受,成功缔造罚时新高!很多题目都写挂或者没精细处理 TLE 了!复盘完得出结论是诈骗题要直接上机写,比赛前还是要写写简单题练练代码。关于提答/交互要不要先入为主讲做法,这个不懂啊。

Solution

A. 整点正方形计数2

枚举某条边的向量,可以得到其他三个点的坐标,根据这个卡出向量初相范围,做二维差分。

C. 造桥与砍树

\((t_u+t_v)\bmod k\) 为边权的 MST 问题,使用 Boruvka 算法。

朴素想法是用 set 维护点权,每次删去连通块内点权并查询后继。这样复杂度 \(O(n\log^2 n)\)

实际上每层已经有 \(O(n)\) 的复杂度,可以做一些相对暴力的实现省却二分。不妨对每个点权提前预处理最优的选择对象,即全局中 \((k-t_u)\bmod k\) 后继的来源。处理到一个连通块时,对排序好的点权序列中属于该连通块的位置做一个并查集操作,即 \(fa_i=i+1\),这样每次查询时直接访问后继并查集的根即可,复杂度就去掉了一个 \(\log\)

E. 看比赛回放

签到题。

显然最坏情况就是轮流获胜,那么必须要在输家能赢的场次都赢了之后才能知道结果,答案是 \(2\times (m-(n+1)/2)+1=2m-n\)

G. 序列与整数对

这个显然和出现次数是有关的,考虑根号分治。

大于根号的部分可以做一下类似扫描线的工作,开桶统计大于根号的位置,在每个位置都做更新,处理出 \(f(x_1,y_1),g(x_2,y_2)\) 表示 \((x,y)\) 的答案,其中 \(x_1,y_2\) 各自是大于根号的数。

\(x,y\) 均小于根号的情况,归并下只有 \(2\sqrt{n}\) 个位置,直接扫一遍。

K. 置换环

结论是直接输出 \(n\sim 1\)。证明考虑置换环数一定是 \(n+x\),前者是作为不动点的情况,而剩下的 \(x\) 肯定不是自环了。注意到 \(n\sim 1\) 在循环同构过程中,连出的都是二元环,那么自然 \(x\) 取得最大值。

posted @ 2025-09-22 10:31  SoyTony  阅读(178)  评论(1)    收藏  举报