社区讨论
求大神纠错qwq
P1378油滴扩展参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi4hio0t
- 此快照首次捕获于
- 2025/11/18 19:23 4 个月前
- 此快照最后确认于
- 2025/11/18 19:23 4 个月前
CPP
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
const double pi = 3.141592653589;
int sx[725];
double xs[725],ys[725],x[724],y[725],r[725],jy[725],jx[725],jz[725],jb[725],s[725];
bool used[100000];
double jl(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
int n,p=0;
double a,b,c,d,ss,xx,zz,yy,ans=0;
scanf("%d",&n);
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
if(n==1) p=1;
if(n==2) p=2;
if(n==3) p=6;
if(n==4) p=24;
if(n==5) p=120;
if(n==6) p=720;
ss=max(b,d); xx=min(b,d);
yy=max(a,c); zz=min(a,c);
for(int i=1;i<=n;i++)
scanf("%lf%lf",&x[i],&y[i]);
for(int i=1;i<=n;i++)
sx[i]=i;
for(int i=1;i<=n;i++)
jb[i]=999999;
for(int c=1;c<=p;c++)
{
for(int i=1;i<=n;i++)
{
xs[i]=x[sx[i]];ys[i]=y[sx[i]];
jx[i]=min(abs(xs[i]-zz),abs(xs[i]-yy));
jy[i]=min(abs(ys[i]-ss),abs(ys[i]-xx));
for(int j=i-1;j>=1;j--)
jb[i]=min(jb[i],jl(xs[i],ys[i],xs[j],ys[j])-r[j]);
jz[i]=min(jx[i],jy[i]);
r[i]=min(jz[i],jb[i]);
if(r[i]<0)
r[i]=0;
}
for(int i=1;i<=n;i++)
s[c]+=pi*r[i]*r[i];
if(s[c]>ans)
ans=s[c];
next_permutation(sx+1,sx+n+1);
}
printf("%.0lf",(ss-xx)*(yy-zz)-ans);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...