【链接】 我是链接,点我呀:)

【题意】

给你n个矩形。
让你找出一个点(x,y)
使得这个点在其中至少(n-1)个矩形中。

【题解】

若干个矩形交在一起的话。
它们所有的公共区域也会是一个矩形。
这个矩形的左下角坐标为$(max(x1_i),max(y1_i))$
这个矩形的右上角坐标为$(min(x2_i),min(y2_i))$
题目要求的是在至少n-1个矩形中。
显然如果这个点在n个矩形中的话,也一定就在n-1个矩形中。
所以转化为求n-1个矩形的公共区域中的任意一点(任意输出就好)
我们可以枚举第i个矩形不考虑。只考虑1..i-1和i+1..n这n-1个矩形。
用上面的方法求出它们的公共区域即可。
(用个前缀和O(n)预处理就好

【代码】

#include <bits/stdc++.h>
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define all(x) x.begin(),x.end()
#define pb push_back
#define lson l,mid,rt<<1
#define ri(x) scanf("%d",&x)
#define rl(x) scanf("%lld",&x)
#define rs(x) scanf("%s",x)
#define rson mid+1,r,rt<<1|1
using namespace std; const double pi = acos(-1);
const int dx[4] = {0,0,1,-1};
const int dy[4] = {1,-1,0,0};
const int N = 2e5;
const int INF = 1e9+7; struct abc{
int x1,x2;
int y1,y2;
}a[N+10]; int premax[N+10][2],premin[N+10][2],aftmax[N+10][2],aftmin[N+10][2];
int n; int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ri(n);
rep1(i,1,n) ri(a[i].x1),ri(a[i].y1),ri(a[i].x2),ri(a[i].y2);
rep1(i,0,1) premax[0][i] = -INF,premin[0][i] = INF;
rep1(i,0,1) aftmax[n+1][i] = -INF,aftmin[n+1][i] = INF;
rep1(i,1,n){
premax[i][0] = max(premax[i-1][0],a[i].x1);
premax[i][1] = max(premax[i-1][1],a[i].y1);
premin[i][0] = min(premin[i-1][0],a[i].x2);
premin[i][1] = min(premin[i-1][1],a[i].y2);
}
rep2(i,n,1){
aftmax[i][0] = max(aftmax[i+1][0],a[i].x1);
aftmax[i][1] = max(aftmax[i+1][1],a[i].y1);
aftmin[i][0] = min(aftmin[i+1][0],a[i].x2);
aftmin[i][1] = min(aftmin[i+1][1],a[i].y2);
}
rep1(i,1,n){
int x1 = max(premax[i-1][0],aftmax[i+1][0]);
int y1 = max(premax[i-1][1],aftmax[i+1][1]);
int x2 = min(premin[i-1][0],aftmin[i+1][0]);
int y2 = min(premin[i-1][1],aftmin[i+1][1]);
if (x1<=x2 && y1<=y2){
cout<<x1<<' '<<y1<<endl;
return 0;
}
}
return 0;
}

最新文章

  1. VS 插件ReSharper10 破解注册方法(转)
  2. nova instance出错:&quot;message&quot;: &quot;Proxy error: 502 Read from server failed
  3. DotNetBar 第1课,设置整体窗口样式
  4. comboBox 手动输入后回车自动更新数据
  5. GO_order
  6. OOD原则汇总
  7. apktool反编译工具
  8. Light OJ 1025 - The Specials Menu(区间DP)
  9. Scala Tuple类型
  10. Bootstrap入门(十)组件4:按钮组与下拉菜单结合
  11. Linux 下安装maven
  12. Delphi 7中的四种消息框
  13. spring(一)--spring/springmvc/spring+hibernate(mybatis)配置文件
  14. 第四天 Java语言基础
  15. 关于snmp octet string和普通string问题
  16. 【PHP快速入门】 第二节 php基本语法
  17. 第25月第2天 Django-By-Example项目记录01
  18. linux命令之kill篇
  19. SSE图像算法优化系列二十九:基础的拉普拉斯金字塔融合用于改善图像增强中易出现的过增强问题(一)
  20. pop

热门文章

  1. [Javascript] Deep Search nested tag element in DOM tree
  2. mysql配置文件夹错误:在安装mysql 5.6.19 时运行cmake命令是出现CMake Error: The source directory does not appear to contai
  3. 【Python学习笔记】-APP图标显示未读消息数目
  4. bzoj5194: [Usaco2018 Feb]Snow Boots
  5. Node.js:事件循环
  6. 10.2 Hibernate持久层
  7. js滚动
  8. BZOJ 1041 数学
  9. The name &lsquo;InitialzeComponent&rsquo; does not exist in the current context
  10. P1982 小朋友的数字