A 染色
给 1 ∼ n 1 \sim n 1∼n 染色,使得 ∀ i < j \forall i < j ∀i<j,如果 j − i j - i j−i 为质数,那么 i i i 和 j j j 颜色不同。
找规律。因为相邻的两个数差不为质数,最小的合数是 4 4 4,所以有 1 1 2 2 3 3 4 4 和 1 2 3 4 1 2 3 4 两个循环。
B 序列
给定一个长为 m m m 的序列 a a a,构造一个序列 b b b,满足 b i ≤ n , ∑ i = 1 m a i b i ≤ D b_i \leq n,\sum_{i=1}^m a_ib_i \leq D bi≤n,∑i=1maibi≤D。求 ∑ b i + k min i = 1 m b i \sum b_i + k \min_{i=1}^m{b_i} ∑bi+kmini=1mbi 的最大值。
先将 a a a 从小到大排序,那么 ∀ i < j \forall i < j ∀i<j,有 b i ≥ b j b_i \ge b_j bi≥bj。 b b b 的构成一定是由 S S S 个 n n n、一个 x x x、若干个 m i n min min 依次构成的。
a n s = S × n + x + ⌊ D − ∑ i = 1 S a i × n − x × a s + 1 ∑ i = S + 2 m a i ⌋ × ( k + m − S − 1 ) ans = S \times n + x + \left\lfloor \frac{D - \sum_{i=1}^S a_i \times n - x \times a_{s+1}}{\sum_{i=S + 2}^m a_i} \right\rfloor \times (k + m - S - 1) ans=S×n+x+⌊∑i=S+2maiD−∑i=1Sai×n−x×as+1⌋×(k+m−S−1)
那么右式在枚举 S S S 后,唯一的未知数是 x x x,那么可以写成一个 f ( x ) = x + a ⌊ b − x c ⌋ f(x) = x + a\lfloor\frac{b - x}{c}\rfloor f(x)=x+a⌊cb−x⌋ 的函数。推理发现这是一个多峰的锯齿函数。那么这个函数的最高峰可能出现
- 第一个波峰。 m i n min min 的优先级更高。
- 最后一个波峰。 m i n min min 的优先级更高。
- 结束点,没有形成波峰。 x x x 的优先级更高。
时间复杂度 O ( T × n log n ) O(T \times n \log n) O(T×nlogn)。
C 树上询问
给定一个 n n n 个点的树,有 m m m 个询问。每个询问给定 u , v u,v u,v,求存在多少个点对 ( u , u + k ) (u,u+k) (u,u+k) 的距离为 k k k。
令 t = lca ( a , b ) t = \operatorname{lca} (a,b) t=lca(a,b),将路径拆成 u → t → v u \to t \to v u→t→v,令 x x x 为 u + k u + k u+k,那么点对有两类
- x x x 在 u → t u \to t u→t 上, d e p x − x = d e p u dep_x - x = dep_u depx−x=depu。
- x x x 在 t → v t \to v t→v 上, d e p x + x = 2 × d e p t − d e p u dep_x + x = 2 \times dep_t - dep_u depx+x=2×dept−depu 。
可以发现在 x x x 和 u , v u,v u,v 已知的前提下,两边都是定值。求一条路径中某个数的次数,主席树板子。时间复杂度 O ( m log n ) O(m \log n) O(mlogn)。
CF595E Edo and Magnets
只删边界上的点,共有四条边,那么会有 4 k 4k 4k 条边有删的可能性。删的点一定是个前缀。所以 O ( k 4 ) O(k^4) O(k4) 枚举。
CF506D Mr. Kitayuta’s Colorful Graph
对于每个颜色新建一个图,没什么好的思路,无非暴力和并查集,空间时间进退两难。不如结合一下,对为某颜色的边的个数进行分类。
如果边数 ≥ n \ge \sqrt n ≥n 那么就并查集,这样的并查集不会建立超过 n \sqrt n n 个。否则就暴力,时间复杂度不会超过 O ( n n ) O(n\sqrt n) O(nn)。这不强制在线,为了建图的空间用 map 离线一下。
时间复杂度 O ( n n ) O(n\sqrt n) O(nn)。
CF1139C Edgy Trees
给定一个
n
n
n 个点的树,树边为红色或黑色。一个长度为
k
k
k 的路径序列是小天才的,当且仅当路径上至少有一条黑边。求序列个数,点可重复。
一条黑边不舒服,就把黑边删掉,相当于求了黑边的补集。那么现在有若棵树,每个树边是红边,对每个联通块点个数的
k
k
k 次幂求和即可,找规律 /doge。