全WA求助
查看原帖
全WA求助
1706930
Kevin1211楼主2025/6/26 16:35

record

0pts code,听取WA声一片。

#include<bits/stdc++.h>
using namespace std;
struct P{double x,y;};
struct L{P a,b;};
int n,m;
vector<L>ls;
vector<P>py;
double cr(P a,P b,P c){return(b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);}
bool isct(L x,L y){
    double c1=cr(x.a,x.b,y.a),c2=cr(x.a,x.b,y.b),c3=cr(y.a,y.b,x.a),c4=cr(y.a,y.b,x.b);
    if(fabs(c1)<1e-8||fabs(c2)<1e-8||fabs(c3)<1e-8||fabs(c4)<1e-8)return 1;
    return c1*c2<0&&c3*c4<0;
}
double len(L x){return sqrt(pow(x.a.x-x.b.x,2)+pow(x.a.y-x.b.y,2));}
double sol(){
    double r=0;
    for(auto&l:ls){
        vector<pair<double,int>>e;
        for(int i=0;i<m;i++){
            L ed={py[i],py[(i+1)%m]};
            if(isct(l,ed)){
                double t=0;
                e.emplace_back(t,1);
                e.emplace_back(t,-1);
            }
        }
        sort(e.begin(),e.end());
        int c=0;
        double cv=0,p=0;
        for(auto&x:e){
            if(c>0)cv+=x.first-p;
            c+=x.second;
            p=x.first;
        }
        r=max(r,cv);
    }
    return r;
}
int main(){
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    cin>>n>>m;
    ls.resize(n);
    for(int i=0;i<n;i++)cin>>ls[i].a.x>>ls[i].a.y>>ls[i].b.x>>ls[i].b.y;
    py.resize(m);
    for(int i=0;i<m;i++)cin>>py[i].x>>py[i].y;
    printf("%.3lf\n",sol());
}
2025/6/26 16:35
加载中...