社区讨论

求大神纠错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 条回复,欢迎继续交流。

正在加载回复...