1 条题解

  • 0
    @ 2025-8-24 23:18:11

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar fish_love_cat
    「要毁灭世界,根本不需要邪恶。起初,那些都是不会被任何人怪罪的小小愿望。而那样的愿望却如此轻易地,和末日相连在一起。」

    搬运于2025-08-24 23:18:11,当前版本为作者最后更新于2025-06-15 13:32:46,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    怎么被奶龙题硬控了 1h /qd


    xx 排序,然后让前两个点先连上,注意要先移 xx 再移 yy

    第三个点直接向移 yy 时形成的竖线作垂就行了,分三种情况,向上延长,向下延长和不用延长。

    大力写就行了。

    #include<bits/stdc++.h>
    using namespace std;
    struct cat{
        int a,b,c,d;
    }ans[15];
    int siz;
    struct fish{
        int x,y;
    }a[3];
    bool cmp(fish x,fish y){
        if(x.x==y.x)return x.y<y.y;
        return x.x<y.x;
    }
    int main(){
        cin>>a[0].x>>a[0].y;
        cin>>a[1].x>>a[1].y;
        cin>>a[2].x>>a[2].y;
        sort(a,a+3,cmp);
        if(a[0].x!=a[1].x)
        ans[++siz]={a[0].x,a[0].y,a[1].x,a[0].y};
        if(a[0].y!=a[1].y)
        ans[++siz]={a[1].x,a[0].y,a[1].x,a[1].y};
        if(a[0].y>=a[2].y&&a[1].y<=a[2].y||a[0].y<=a[2].y&&a[1].y>=a[2].y){
            ans[++siz]={a[1].x,a[2].y,a[2].x,a[2].y};
        }else{
            int xx=siz;
            if(abs(ans[xx].a-a[2].x)+abs(ans[xx].b-a[2].y)>=
                abs(a[1].x-a[2].x)+abs(a[1].y-a[2].y)){
                if(a[1].x!=a[2].x)
                ans[++siz]={a[1].x,a[1].y,a[2].x,a[1].y};
                if(a[1].y!=a[2].y)
                ans[++siz]={a[2].x,a[1].y,a[2].x,a[2].y};
            }else{
                if(ans[xx].a!=a[2].x)
                ans[++siz]={ans[xx].a,ans[xx].b,a[2].x,ans[xx].b};
                if(ans[xx].b!=a[2].y)
                ans[++siz]={a[2].x,ans[xx].b,a[2].x,a[2].y};
            }
        }
        cout<<siz<<'\n';
        for(int i=1;i<=siz;i++)
            cout<<ans[i].a<<' '<<ans[i].b<<' '<<ans[i].c<<' '<<ans[i].d<<'\n';
        return 0;
    }
    
    • 1

    信息

    ID
    12543
    时间
    3000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者