做题记录(Aug.)
8.1
P3518
神秘数论题。根据裴蜀定理,密码集合肯定是一个数在 \(n\) 以内的所有倍数,并且 \(n\) 也是。
考虑枚举 \(\gcd(n,m_k)\) 的所有因数,看其他错误的 \(m\) 是不是它的倍数。最小的符合要求的因数对应的就是答案。
但是这样会超时,所以考虑优化,处理出 \(\gcd(n,m_k)\) 的质因子,让其他的 \(m\) 和 \(\gcd(n,m_k)\) 取 \(\gcd\),然后记忆化找其他的 \(m\) 的所有因数,标记一下就对了。
P7883
使用分治。先按 \(x\) 排序,然后取中间点,递归处理两边。然后求得一个答案 \(d\) 后,考虑距离中心点所在平行 \(y\) 轴的直线距离不超过 \(d\) 的点,放到一起,按 \(y\) 排序,然后检查相近的,用他们的距离更新答案。由于检查的点在一定的范围内,这个范围内点多了就会导致递归求到的答案小于 \(d\),所以只会有几个点,复杂度 \(O(n\log n)\)。
P2742*
二维凸包板子。
P2924
按极角序把所有边排序,然后枚举起点,再枚举边 DP。因为对极角序排过序,所以顺序有保障。

浙公网安备 33010602011771号