码迷,mamicode.com
首页 > 其他好文 > 详细

C. Rectangles

时间:2018-10-04 14:31:24      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:枚举   ons   href   bool   force   .com   bre   部分   group   

链接

[http://codeforces.com/group/1EzrFFyOc0/contest/1028/problem/C]

题意

给你n个矩形的左下角和右上角坐标,问你至少包含在n-1个矩形的点的坐标,有多个随便输出一个

分析

分别从前到后和从后到前枚举矩形重叠的部分
分别有b[i]和c[i]保存从第一个到第i个的矩形重叠的小矩形和从后面倒着来第n个到第i个的矩形重叠的小矩形
任意两个矩形重叠的小矩形左下和右上坐标计算为
(max(a.xl,b.xl),max(a.yl,b.yl)) 就是交矩形的左下角坐标。
(min(a.xr,b.xr),min(a.yr,b.yr)) 就是交矩形的右上角坐标。
然后枚举去掉n个中的一个是否能构成矩形如果可以直接输出左下角坐标,否则继续枚举

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=150000;
ll inf=1e9+10;
struct node{
    ll xl,yl,xr,yr;
}a[maxn],b[maxn],c[maxn],wo;

bool jud(node g){
    
    if(g.xl>g.xr||g.yl>g.yr) return 0;
    return 1;
}

int main(){
    int n,i;
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    //freopen("in.txt","r",stdin);
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>a[i].xl>>a[i].yl>>a[i].xr>>a[i].yr;
    
    b[0].xl=b[0].yl=-inf;
    b[0].xr=b[0].yr=inf;
    for(i=1;i<=n;i++){
        b[i].xl=max(a[i].xl,b[i-1].xl);
        b[i].yl=max(a[i].yl,b[i-1].yl);
        b[i].xr=min(a[i].xr,b[i-1].xr);
        b[i].yr=min(a[i].yr,b[i-1].yr);
    }
    
    c[n+1].xl=c[n+1].yl=-inf;
    c[n+1].xr=c[n+1].yr=inf;
    for(i=n;i>=1;i--){
        c[i].xl=max(a[i].xl,c[i+1].xl);
        c[i].yl=max(a[i].yl,c[i+1].yl);
        c[i].xr=min(a[i].xr,c[i+1].xr);
        c[i].yr=min(a[i].yr,c[i+1].yr);
    }
    if(jud(b[n-1])){
        cout<<b[n-1].xl<<‘ ‘<<b[n-1].yl<<endl;
    }
    else if(jud(c[2])){
        cout<<c[2].xl<<‘ ‘<<c[2].yl<<endl;
    }
    else{
        for(i=2;i<n;i++){
            wo.xl=max(b[i-1].xl,c[i+1].xl);
            wo.yl=max(b[i-1].yl,c[i+1].yl);
            wo.xr=min(b[i-1].xr,c[i+1].xr);
            wo.yr=min(b[i-1].yr,c[i+1].yr);
            if(jud(wo))
                break;
        }
        cout<<wo.xl<<‘ ‘<<wo.yl<<endl;
    }
    return 0;
}

C. Rectangles

标签:枚举   ons   href   bool   force   .com   bre   部分   group   

原文地址:https://www.cnblogs.com/mch5201314/p/9742160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!