AtCoder Beginner Contest 058(ABCD)

AtCoder Beginner Contest 058(ABCD)

A - ι⊥l

思路:特判

B - ∵∴∵

思路:模拟

C - Dubious Document

思路:暴力统计下每个字母出现的最小次数,然后排序。

D -

求和优化。

我的公式:考虑包含某个 y i y_i yi 出现的所有对的贡献分类求和。

s y = ∑ i = 2 m − ( m − i + 1 ) × y i − 1 s_y=\sum_{i=2}^m-(m-i+1)\times y_{i-1} sy=i=2m(mi+1)×yi1

s x s_x sx同理。

最后答案即: s x × s y s_x\times s_y sx×sy

更优的方法:考虑成对出现的次数。

x 1 , x n x_1,x_n x1,xn都出现 n − 1 n-1 n1次,所以 ( x n − x 1 ) (x_n-x_1) (xnx1)贡献是: ( n − 1 ) × ( x n − x 1 ) (n-1)\times(x_n-x_1) (n1)×(xnx1)

x 2 , x n − 1 x_2,x_{n-1} x2,xn1都出现 n − 2 n-2 n2次,所以 ( x n − 1 − x 2 ) (x_{n-1}-x_2) (xn1x2)贡献是: ( n − 2 ) × ( x n − 1 − x 2 ) (n-2)\times(x_{n-1}-x_2) (n2)×(xn1x2)

依次类推求和即可。

你可能感兴趣的:(Atcoder题解)