G - Intersecting Rectangles Kattis - intersectingrectangles (扫描线)(判断多个矩形相交)
题目链接:
G - Intersecting Rectangles
Kattis - intersectingrectangles
题目大意:给你n个矩形,每一个矩形给你这个矩形的左下角的坐标和右上角的坐标,然后问你这些矩形会不会相交,如果存在相交的点,输出1,否则输出0。
具体思路:扫描线,我们首先对x进行排序,然后判断当前x直线对应的线段上是否有x已经覆盖,如果已经有就证明存在相交的情况。但是这样会存在多算的情况,所以我们对于每一个矩形的左端点打一个标记,然后右端点再打一个标记,当左端点的时候,先询问,再去更新。对于右端点,先更新,再去询问。
感谢lxw的讲解。
AC代码:
#include<bits/stdc++.h>
using namespace std;
# define ll long long
const int maxn = 4e5+;
int tree[maxn<<];
struct node{
int y1,y2,x,flag;
node(){}
node(int xx,int yy,int zz,int kk){
y1=xx;
y2=yy;
x=zz;
flag=kk;
}
bool friend operator <(node t1,node t2){
return t1.x<t2.x;
}
}q[maxn<<];
int lowbit(int t){
return t&(-t);
}
int ask(int t){
int ans=;
while(t){
ans+=tree[t];
t-=lowbit(t);
}
return ans;
}
void update(int pos,int val){
while(pos<=4e5+){
tree[pos]+=val;
pos+=lowbit(pos);
}
}
vector<int>w;
int main(){
int n;
scanf("%d",&n);
int x1,y1,x2,y2;
for(int i=;i<=n;i++){
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
q[i]=node(y1,y2,x1,);
q[i+n]=node(y1,y2,x2,-);
w.push_back(x1);
w.push_back(x2);
w.push_back(y1);
w.push_back(y2);
}
sort(w.begin(),w.end());
sort(q+,q+*n+);
int k=;
for(int i=;i<=*n;i++){
int l=lower_bound(w.begin(),w.end(),q[i].y1)-w.begin()+;
int r=lower_bound(w.begin(),w.end(),q[i].y2)-w.begin()+;
if(q[i].flag==){
if(ask(r)-ask(l)>){
k=;
break;
}
update(l,);
update(r,);
}
else {
update(l,-);
update(r,-);
if(ask(r)-ask(l)>){
k=;
break;
}
}
}
if(k){
printf("1\n");
}
else {
printf("0\n");
}
return ;
}
G - Intersecting Rectangles Kattis - intersectingrectangles (扫描线)(判断多个矩形相交)的更多相关文章
- POJ 1410--Intersection(判断线段和矩形相交)
Intersection Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16322 Accepted: 4213 Des ...
- poj 1410 Intersection (判断线段与矩形相交 判线段相交)
题目链接 Intersection Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12040 Accepted: 312 ...
- Kattis - intersectingrectangles 扫描线+线段树
题目:https://open.kattis.com/problems/intersectingrectangles 题意::给你n个矩形,每一个矩形给你这个矩形的左下角的坐标和右上角的坐标,然后问你 ...
- Codeforces Round #587 (Div. 3) C题 【判断两个矩形是否完全覆盖一个矩形问题】 {补题 [差点上分系列]}
C. White Sheet There is a white sheet of paper lying on a rectangle table. The sheet is a rectangle ...
- C:矩形相交、相包含、相离关系判断
矩形相交 包含 问题.参考 假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形 rect1{(minx1, miny1)(maxx1, maxy1)} ...
- 判断线段和直线相交 POJ 3304
// 判断线段和直线相交 POJ 3304 // 思路: // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. #include <cstdio ...
- Rectangle and Square(判断正方形、矩形)
http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=42#problem/D 改了N多次之后终于A了,一直在改判断正方形和矩形那,判断 ...
- Pick-up sticks(判断两条线段是否相交)
Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 8351 Accepted: 3068 Description Stan has ...
- 判断直线与线段相交 POJ 3304 Segments
题意:在二维平面中,给定一些线段,然后判断在某直线上的投影是否有公共点. 转化,既然是投影,那么就是求是否存在一条直线L和所有的线段都相交. 证明: 下面给出具体的分析:先考虑一个特殊的情况,即n=1 ...
随机推荐
- Day29--Python--缓冲区, 粘包
tcp: 属于长连接,与一个客户端进行连接了以后,其他的客户端要等待.要想连接另外一个客户端,需要优雅地断开当前客户端的连接 允许地址重用:server.setsockopt(socket.SOL_S ...
- pytest 4.scope="module"介绍
前言: 上一篇讲到fixture通过scope参数控制setup级别,不填的时候默认 scope="function",那么接下来就会讲scope="module&quo ...
- Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task
传送门 https://www.cnblogs.com/violet-acmer/p/10068786.html 题意: 给定一个长度为 n 的数组a[ ],并且有两种操作: ①将前 i 个数全都加上 ...
- jQuery、layer实现弹出层的打开、关闭功能实例详解
本文主要介绍了jQuery.layer实现弹出层的打开.关闭功能,需要的朋友可以参考下,希望能帮助到大家. 打开弹出层: 在list页面带入layer.js 在list页面点击时,弹出form弹出层, ...
- 论文总结(Frequent Itemsets Mining With Differential Privacy Over Large-Scale Data)
一.论文目标:将差分隐私和频繁项集挖掘结合,主要针对大规模数据. 二.论文的整体思路: 1)预处理阶段: 对于大的数据集,进行采样得到采样数据集并计算频繁项集,估计样本数据集最大长度限制,然后再缩小源 ...
- KMP之计算Next数组
KMP的Next数组:模式串的前缀与后缀的“相交”长度 KMP算法步骤: 1.先算next数组 2.若失配(此时模式串下标为j),利用Next数组求出失配后滑动的新位置 a.Next[j] \geq ...
- TensorFlow tensor张量拼接concat - split & stack - unstack
TensorFlow提供两种类型的拼接: tf.concat(values, axis, name='concat'):按照指定的已经存在的轴进行拼接 tf.stack(values, axis=0, ...
- Hbase学习03
第3章 Hbase数据存储模型与工作组件 Data格式设计的的总体原则是按照需求要求,依据Hbase性能的相关标准规范和文件,并遵循“统一规范.统一数据模型.统一规划集群.分步实施”的原则,注重实际应 ...
- 060、在docker中使用flannel(2019-03-29 周五)
参考https://www.cnblogs.com/CloudMan6/p/7441188.html 配置docker 连接flannel 编辑host1的docker配置文件/etc/sys ...
- sweetalert插件的使用
sweetalert是一个漂亮的弹窗插件,使用它可以完成各种炫酷的弹窗效果 链接:sweetalert 实例 删除演示 urls.py from django.contrib import admin ...