1 条题解
-
0
自动搬运
来自洛谷,原作者为

fish_love_cat
「要毁灭世界,根本不需要邪恶。起初,那些都是不会被任何人怪罪的小小愿望。而那样的愿望却如此轻易地,和末日相连在一起。」搬运于
2025-08-24 23:18:11,当前版本为作者最后更新于2025-06-15 13:32:46,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
怎么被奶龙题硬控了 1h /qd
按 排序,然后让前两个点先连上,注意要先移 再移 。
第三个点直接向移 时形成的竖线作垂就行了,分三种情况,向上延长,向下延长和不用延长。
大力写就行了。
#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; }
信息
- ID
- 12543
- 时间
- 3000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者