SY_Nightmare @ 2024-10-04 14:18:45
随便乱打的代码,不开02都能过。
#include<bits/stdc++.h>
#define pi acos(-1.0)
using namespace std;
struct node{double x,y;}a[200005];
int n;
double ans=1e15;
bool cmp(node a,node b){return a.x<b.x;}
double dis(node a,node b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=i+5&&j<=n;j++)
ans=min(ans,dis(a[i],a[j]));
cout<<fixed<<setprecision(4)<<ans;
return 0;
}
by SY_Nightmare @ 2024-10-04 14:19:29
提交记录:https://www.luogu.com.cn/record/179908658
by SY_Nightmare @ 2024-10-04 14:21:46
请求加强数据
by Peter_0327 @ 2024-10-04 14:23:07
tql orz
by Texas_the_Omertosa @ 2024-10-04 14:31:48
@SY_Nightmare 看第一篇题解
by 123456ph @ 2024-10-04 14:32:46
我们充分发扬人类智慧:
将所有点全部绕原点旋转同一个角度,然后按
x坐标排序
根据数学直觉,在随机旋转后,答案中的两个点在数组中肯定不会离得太远
所以我们只取每个点向后的5个点来计算答案
这样速度快得飞起,在n=1000000时都可以在1s内卡过
抄题解好玩吗?
by SY_Nightmare @ 2024-10-04 14:33:39
@Texas_the_Omertosa 我并未旋转
by 123456ph @ 2024-10-04 14:33:47
@SY_Nightmare 还有,你这提交记录也看不了
by SY_Nightmare @ 2024-10-04 14:36:03
@123456ph 好了
by SY_Nightmare @ 2024-10-04 14:38:45
还有 这篇题解也无代码 我抄什么???
题解中的随机旋转你看到了吗 代码中旋转了吗???
请在发帖前过一下脑子(雾)
by Texas_the_Omertosa @ 2024-10-04 16:16:42
@SY_Nightmare 我认错