CE!求调
查看原帖
CE!求调
577241
违规用户名577241楼主2023/3/21 20:48
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
const double PI=3.1415926535;
using namespace std;
const int maxn=7+5;
double x[maxn],y[maxn];
bool flag[maxn];
double r[maxn];
int N;
double x1,y1,x2,y2;
double ans;
double point(int i)
{
	double t1=min(abs(x[i]-x1),abs(x[i]-x2));
	double t2=min(abs(y[i]-y1),abs(y[i]-y2));
	double ans=min(t1,t2);
	for(int j=0;j<N;j++)
	{
		if(i!=j&&flag[j])
		{
			double se=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
			ans=min(ans,max(se-r[j],0.0));
		}
	}
	return an;
}
void dfs(int sum,double num)
{
	if(sum>N)
	{
		ans=max(num,ans);
		return;
	}
	for(int i=0;i<N;i++)
	{
		if(!flag[i]) 
		{
			r[i]=point(i);
			flag[i]=true;
			dfs(sum+1,num+r[i]*r[i]*PI);
			flag[i]=false;
		}
	}
}
int main()
{
	scanf("%d",&N);
	scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
	double sss=abs(x1-x2)*abs(y1-y2);
	for(int i=0;i<N;i++)
	{
		scanf("%lf%lf",&x[i],&y[i]);
	}
	dfs(1,0);
	int own=sss-ans+0.5;
	printf("%d\n",own);
	return 0;
}
2023/3/21 20:48
加载中...