2020牛客暑期多校训练营Social Distancing(平面几何,动态规划,打表)

博客介绍了Social Distancing问题,要求在给定圆上的点间距离平方和最大。通过对n=2到6的情况分析,得出点应分布在圆上的结论。通过数学推导将问题转化为动态规划求解,避免使用模拟退火算法。博主分享了利用平面几何和动态规划的解题方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Social Distancing

题目描述

在这里插入图片描述

输入描述:

在这里插入图片描述

输出描述:

在这里插入图片描述

示例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=1n1j=i+1nd(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=1n1j=i+1nd(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=1n1j=i+1n

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值