题目描述
输入描述:
输出描述:
示例1
输入
2
4 2
5 10
输出
64
2496
题目大意
给定一个圆的半径 r r r,在圆上和圆内有 n n n个点,要求 ∑ i = 1 n − 1 ∑ j = i + 1 n d ( i , j ) 2 \mathop{\sum}\limits_{i=1}^{n-1}\mathop{\sum}\limits_{j=i+1}^{n}d(i,j)^2 i=1∑n−1j=i+1∑nd(i,j)2的最大值。其中 d ( i , j ) d(i,j) d(i,j)表示 i i i和 j j j之间的距离。即求所有点的距离的平方和的最大值。
分析
这题据说许多大佬是用模拟退火打表就AC了,蒟蒻终究是蒻了,模拟退火是什么都不知道(话说有大佬能在线给个答案吗?)。但是 乐 正 绫 乐正绫 乐正绫又是大佬,他提供了一种不用模拟退火的打表,而是用了神器动规,在此先%下了。(这个人是单人挑多校的)
首先我们先看看这些点是怎样取会使得答案最大。
上面给出了 n n n从二到六的最大的分布。我们可以发现,点总是分布在圆上比较大。
然后我们确定了点肯定都是在圆上而不是圆内。
接下来观察这个式子:
∑ i = 1 n − 1 ∑ j = i + 1 n d ( i , j ) 2 \mathop{\sum}\limits_{i=1}^{n-1}\mathop{\sum}\limits_{j=i+1}^{n}d(i,j)^2 i=1∑n−1j=i+1∑nd(i,j)2
其实为 ∑ i = 1 n − 1 ∑ j = i + 1 n ( x i − x j ) 2 + ( y i − y j ) 2 \mathop{\sum}\limits_{i=1}^{n-1}\mathop{\sum}\limits_{j=i+1}^{n}(x_i-x_j)^2+(y_i-y_j)^2 i=1∑n−1j=i+1∑n