tijie

陈柏诚  •  2年前


include<bits/stdc++.h>

using namespace std;

define INF 0x7f7f7f7f//int最大数

int main() { int i; long long x,y; long long x1,y1,x2,y2,n; long long r=0,ans=INF; pairdis[200000];//pair类型 cin>>x1>>y1>>x2>>y2>>n; for (i=1; i<=n; i++) {

cin>>x>>y;
dis[i]=make_pair((x-x1)*(x-x1)+(y-y1)*(y-y1),(x-x2)*(x-x2)+(y-y2)*(y-y2));//距离 

} sort(dis+1,dis+n+1); while(n) {

ans=min(ans,dis[n].first+(r=max(r,dis[n+1].second)));
n--;

} cout<<ans<<endl; return 0; }


评论:

请解释一下思路


mod998244353  •  2年前

请解释一下思路


mod998244353  •  2年前

pair不能直接当数据类型使用

pair<数据类型,数据类型> 数组;

修改代码如下:

#include<bits/stdc++.h>
using namespace std;
#define INF 0x7f7f7f7f
int main()
{
	int i;
	long long x,y,x1,y1,x2,y2,n,r=0,ans=INF;
	pair<long long , long long> dis[200000];
	cin>>x1>>y1>>x2>>y2>>n;
	for (i=1; i<=n; i++)
	{
		cin>>x>>y;
		dis[i]=make_pair((x-x1)*(x-x1)+(y-y1)*(y-y1),(x-x2)*(x-x2)+(y-y2)*(y-y2));
	}
	sort(dis+1,dis+n+1);
	while(n)
	{
		ans=min(ans,dis[n].first+(r=max(r,dis[n+1].second)));
		n--;
	}
	cout<<ans<<endl;
	return 0;
}

冼俊烨  •  14天前