请求加强数据
查看原帖
请求加强数据
592238
Elairin176楼主2022/12/29 11:13
#include <iostream>
#include <algorithm>
using namespace std;
struct pos{
	long long x;
	long long y;
}a[400400];
inline long long dis(long long _x1,long long _y1,long long _x2,long long _y2){
	return (_x2-_x1)*(_x2-_x1)+(_y2-_y1)*(_y2-_y1);
}
inline long long min(long long a,long long b){
	return a<b?a:b;
}
bool cmp(pos a,pos b){
	return a.x*a.x+a.y*a.y>b.x*b.x+b.y*b.y;
}
long long ans=1e18;
int n;
int main(void){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i].x>>a[i].y;
	}
	sort(a,a+n,cmp);
	for(int i=1;i<n;i++){
		for(int j=-100;j<=100;j++){
			if(j==0){
				j++;
			}
			if(i+j<0||i+j>=n){
				if(j>0){
					break;
				}
				continue;
			}
			ans=min(ans,dis(a[i+j].x,a[i+j].y,a[i].x,a[i].y));
		}
	}
	cout<<ans;
}

以上代码用排序轻松 AC 了本题。
这题的正解是分治,但是依旧卡了过去,所以请求加强数据。

2022/12/29 11:13
加载中...