AtCoder做题记录
作者:互联网
AtCoder大乱炖
AtCoder乱做
AtCoder 随便草
ARC147
ARC147C
发现这个式子当所有 \(x_i\) 趋近于某一个值时答案比较优,于是可以发现这是一个近似单谷函数,用二分 + 随机化/特判过掉就行。
令 \(\max_{i = 1}^n L_i = M\),\(\min_{i = 1}^n R_i = m\)。
-
\(M \leq m\)
显然 \(\forall 1 \leq i \leq n, L_i \leq M\) 且 \(R_i \geq m\),于是令 \(\forall 1 \leq i \leq n, x_i = m\),答案为 \(0\)
-
\(M < m\)
因为 \(L_i \leq R_i\),所以 \(M, m\) 必然位于两个不同的下标。假设 \(M = L_p, m = R_q\),那么有结论:\(\forall 1 \leq i \leq n, x_p \leq x_i \leq x_q\)
证明:如果存在若干位置,使得 \(x_i < x_p\) 或 \(x_i > x_q\),则因为有 \(x_q \leq m < M \leq x_p\),且 \(\forall 1 \leq i \leq n, L_i \leq M\) 且 \(R_i \geq m\),只需要令 \(x_i < x_q\) 的位置为 \(x_q\),\(x_i > x_p\) 的位置为 \(x_p\) 即可,与题设矛盾。
于是令 \(C = \sum\limits_{i \neq p, q}^n \sum\limits_{j \neq p, q}^n |x_i - x_j|\),则答案为:
\(C + |x_p - x_q| + \sum\limits_{i \neq l, r} |x_i - x_p| + \sum\limits_{i \neq l, r} |x_i - x_q|\)
发现这个式子可以递归定义,简单手玩可以发现最后的答案为:
\(\sum\limits_{i = 0}^{n - 1} |L_i - R_i| \times (n - 2i - 1)\)
其中 \(L_i\) 按降序排列,\(R_i\) 按升序排列。
时间复杂度 \(O(n \log n)\)
ARC147D
大诈骗,差评。
首先发现
标签:AtCoder,limits,记录,sum,leq,做题,forall,neq 来源: https://www.cnblogs.com/lingspace/p/atcoder-problems.html