C Link Cut Centroids
题意:给定一个树,要求删掉某条树边、再加入某条新边使得新图仍然是树,且重心唯一。输出一个可行方案。
由重心性质:一个树要么有一个重心,要么有两个在同一条边上的重心。
对于后者,设两个重心为 a , b a, b a,b。只要把 ( a , b ) (a, b) (a,b) 断开,然后把 a a a 的一个叶子割下来接到 b b b 上即可。
D Three Sequences
考虑差分序列,设 d i = a i − a i − 1 ( i > 1 ) d_i = a_i - a_{i-1} (i > 1) di=ai−ai−1(i>1),如果设 c 1 = x c_1 = x c1=x 那么会发现 b n = t − x b_n = t -x bn=t−x,其中 t = a 1 + ∑ d i > 0 d i t = a_1 + \sum_{d_i > 0}d_i t=a1+∑di>0di。
最小化 max ( b i , c i ) \max(b_i, c_i) max(bi,ci) 就是最小化 max ( b n , c 1 ) \max(b_n, c_1) max(bn,c1),即令 x x x 尽量取 t t t 的一半即可。由于操作在差分序列上是单点修改,因此很容易在 O ( 1 ) O(1) O(1) 内更新答案。
E Deleting Numbers
题意:交互题,有一个数 x ∈ [ 1 , n ] x \in [1, n] x∈[1,n] 要猜。一开始集合中有这 n n n 个数。有两种操作:
B a
:得到集合中未被删除的 a a a 的倍数的个数,并删除所有除 x x x 外 a a a 的倍数。须 a > 1 a > 1 a>1。A a
:给出 a a a,得到集合中未被删除的 a a a 的倍数的个数。 a ≥ 1 a \ge 1 a≥1。
要求操作数 ≤ 1 0 4 \le 10^4 ≤104。 n ≤ 1 0 5 n\le 10^5 n≤105。
容易想到应该把 x x x 的质因子及其幂次全部得到。显然对 ≤ n \le \sqrt{n} ≤n 的所有质因子可以暴力求出。
现在要看 x x x 有无更大的质因子。由于这样的质因子至多有 1 个,我们考虑检查所有 > n > \sqrt{n} >n 的质数。
但这些数太多,一个检查两遍不行,也没法二分。怎么办?分块即可。每经过一个块就用 A 1
检查,如果查到质因子在某个块内就暴力把这个块扫一遍即可。
小结
我坑我自己的一场。
C 在只有唯一重心时我一直输出 1 2
,因此 WA 了 3 次。
E 想到了 A 1
很有用,以及对 ≤ n \le \sqrt{n} ≤n 的要暴力,但没想到对大质因子分块。只能说这应该确实是一个有用的 trick。