40pts 求调
查看原帖
40pts 求调
970132
Hero_Broom楼主2024/5/3 22:10

提交记录

#include<bits/stdc++.h>
#define sq(x) ((x)*(x))
#define gd(_,__,___,____) (sqrt(sq(_-__)+sq(___-____)))
using namespace std;
double ans;
const double PI=3.1415926535;
int n,x,y,x_,y_,a[7]={0,1,2,3,4,5,6},px[10],py[10];
vector< pair<int,double> > v;
double check(int t){
	double tmp=0x7fffffff;
	tmp=min(tmp,abs((double)px[t]-x));
	tmp=min(tmp,abs((double)x_-px[t]));
	tmp=min(tmp,abs((double)py[t]-y));
	tmp=min(tmp,abs((double)y_-py[t]));
	for(int i=0;i<v.size();i++) tmp=min(tmp,gd(px[t],py[t],px[v[i].first],py[v[i].first])-v[i].second);
	return (tmp<0?0:tmp);
}
void update(){
	v.clear();
	for(int i=1;i<=n;i++) v.push_back({a[i],check(a[i])});
	double tmp=0;
	for(int i=0;i<v.size();i++) tmp+=PI*sq(v[i].second);
	ans=max(ans,tmp);
}
int main(){
	scanf("%d%d%d%d%d",&n,&x,&y,&x_,&y_);
	for(int i=1;i<=n;i++) scanf("%d%d",&px[i],&py[i]);
	do{
		update();
	}while(next_permutation(a+1,a+1+n));
	printf("%.0lf\n",round(abs(x_-x)*abs(y_-y)-ans));
}
2024/5/3 22:10
加载中...