2024 ICPC 网络赛 R1 解题集
A. World Cup
手推一下然后打表。
B. Graph
一个需要绕过的弯是我们并不需要中间走过点的 \(\gcd\) 刚好是 \(\gcd(u,v)\),如果不满足只需再经过一遍,因此限制转化为每个 \((u,v)\) 都能通过 \(\gcd(u,v)\) 倍数的点联通,再考察每个 \(\gcd\),就可以发现这等价于对于任意 \(d\),\(d\) 倍数的点的导出子图联通。
怎么对这样的限制计数呢?把边分类,从大往小扫描 \(d\),这样每次相当于在已有边和联通块的基础上加上若干边使图联通。此时我们有 \(\lfloor \frac{n}{d} \rfloor\) 个点,\(\gcd\) 大于 \(d\) 的点已经联通了,考察联通块形态可以发现这张图只由大于点数一半的质数,1 和其他点组成。
计算加边使这张图联通的方案数可以用 Cayley 定理计算,最终答案就是每个 \(d\) 的答案之积,不难发现 \(\lfloor \frac{n}{d} \rfloor\) 相同的 \(d\) 答案相同,于是整除分块再筛质数个数即可解决此题。
C. Permutation Counting 4
排列加上方案数模 2 会启发我们去想一些双射,而行列式特有的性质与其完美匹配,直接把限制搬上矩阵,不难发现答案的奇偶性就是行列式的奇偶性,于是我们需要想办法算出行列式。
连续段很多,考虑消元,加上一行一列后再把连续段消成 -1 和 1,你发现此时如果行线性相关就是 0,否则行列式就是 1 或 -1,因此把 -1 1 段看做边判断是否成环就能算出行列式奇偶性了。
D. Protection War
由于每次操作完连续段长度会 -1,暴力操作复杂度也许并不很劣,尝试对短段设计势能函数可以发现暴力对段操作的复杂度其实是对的,感性理解就是大段不管,小段最多根号次,势能变化量也在合理范围内。那么我们可以使用数据结构维护操作,复杂度的平衡和实现细节需要注意。
F. Make Max
从小到大操作一定最优,可以单调队列然后模拟。
G. The Median of the Median of the Median
二分扫描线后变成查区间和大于 0 的后缀个数,直接数点,值域很小可以开个桶 \(O(1)\) 做。
H. Rainbow Bracket Sequence
对颜色和点建图暴力跑上下界网络流。
L. Bull Farm
分讨操作后的值域,要么是单向边,要么是置换,对于置换有用的边不超过 n-1 条,记录后暴力跑一个最小瓶颈生成树类似的东西。
M. Find the Easiest Problem
签到模拟。