传送门

•题意

  给你三个矩形,依次编号为 1,2,3;

  判断 矩形1 是否被 矩形2 和 矩形3 完全覆盖;

  如果没有完全覆盖,输出 "YES",反之,输出 "NO";

•题解

  我是用扫描线做的;

  首先,定义如下数据结构:

 struct Data
{
int x;
int y1,y2;
int f;
int id;
bool operator < (const Data& obj)const
{
return x < obj.x;
}
}line[],white[];

  先扫描竖直边;

  将这 3 个矩形的左右边分别存入上述数据结构中;

  并保存 矩形1 的左右边;

 int num=;
for(int i=;i <= ;++i)
{
int x1,y1;
int x2,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if(i == )
{
white[]={x1,y1,y2,,i};///f=1表示该边为当前矩形的左边,f=-1表示该边为当前矩形的右边
white[]={x2,y1,y2,-,i};///保存矩阵1的两个竖直边
}
line[++num]={x1,y1,y2,,i};///保存矩阵的竖直边
line[++num]={x2,y1,y2,-,i};
}

  保存好边的信息后,按照 x 升序排列;

  接下来就是判断 矩形1 的竖直边是否被 矩形2,3 完全覆盖;

  但是,仅仅判断竖直边是否被完全覆盖是不够的,还需要扫描水平边;

  原因的话,可以模拟一下如下样例:


  这样的话,就得需要保存矩形的上下边,并再次扫描一遍;

  只有当 矩形1 的竖直边和水平边都分别被 矩形2,3 完全覆盖时,才能说明 矩形1 被 矩形2,3 完全覆盖;

•Code

  CodeForces1216C.cpp

•Wa过的样例


  此样例很明确的说明了 Code 中第 49~50 行的判断语句的放置位置以及如何确定判断条件;

  还有一个就是上述题解中的样例,明确的说明了为什么要扫描两次;

CodeForces 1216C(假的计算几何+扫描线)的更多相关文章

  1. BZOJ 1845: [Cqoi2005] 三角形面积并 [计算几何 扫描线]

    1845: [Cqoi2005] 三角形面积并 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 1151  Solved: 313[Submit][Stat ...

  2. Code Chef IMPO(计算几何+扫描线+积分)

    题面 传送门 前置芝士 扫描线,积分求面积 题解 我怎么老是忘了积分可以求面积-- 首先,这两个投影的最小的\(x\)坐标和最大的\(x\)坐标必须相等,否则肯定无解 我们考虑一种方法,枚举\(x\) ...

  3. Five Dimensional Points CodeForces - 851C (计算几何+暴力)

      C. Five Dimensional Points time limit per test 2 seconds memory limit per test 256 megabytes input ...

  4. HDU 4116 Fruit Ninja ( 计算几何 + 扫描线 )

    给你最多1000个圆,问画一条直线最多能与几个圆相交,相切也算. 显然临界条件是这条线是某两圆的公切线,最容易想到的就是每两两圆求出所有公切线,暴力判断一下. 可惜圆有1000个,时间复杂度太高. 网 ...

  5. Codeforces 350D(计算几何)

    要点 用A.B.C一般式确定每条直线 将合法的圆心中点存到每条直线所属的vector中 枚举所有线段,二分后\(O(1)\)得到其中存在多少答案,累加 #include <cstdio> ...

  6. Codeforces 703C(计算几何)

    C. Chris and Road time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  7. Codeforces 618C(计算几何)

    C. Constellation time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  8. Codeforces 559A(计算几何)

    A. Gerald's Hexagon time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. 牛客多校第九场 J Symmetrical Painting 计算几何/扫描线

    题意: 平面上有几个宽度相同的矩形区域被涂黑了,让你找到一条横线横截若干个矩形,把这些黑色部分抠下来一部分使得它们以这条横线为对称轴,求能抠下来的最大面积. 题解: 在随着对称轴上移的过程中,必然有一 ...

随机推荐

  1. LintCode刷题笔记-- O(1) Check Power of 2

    标签: 位运算 题目: Using O(1) time to check whether an integer n is a power of 2. 解题思路: 这道题是利用位运算判断一个数是不是2 ...

  2. 大数据技术之Hadoop(MapReduce)

    第1章 MapReduce概述 1.1 MapReduce定义 1.2 MapReduce优缺点 1.2.1 优点 1.2.2 缺点 1.3 MapReduce核心思想 MapReduce核心编程思想 ...

  3. jQuery事件大全(真的很全)

    DOM Attribute $("p").addClass(css中定义的样式类型); 给某个元素添加样式$("img").attr({src:"te ...

  4. Python编码---转自金角大王

    本节内容 编码回顾 编码转换 Python的bytes类型 编码回顾 在备编码相关的课件时,在知乎上看到一段关于Python编码的回答 这哥们的这段话说的太对了,搞Python不把编码彻底搞明白,总有 ...

  5. homework-//2017-12-27 11:11 星期三

    //2017-12-27 11:11 星期三 const WEEKMAP = { 0:"sunday", 1:"monday", 2:"tuesday ...

  6. jQuery左右循环滚动图片特效

    在线演示 本地下载

  7. PHPCMS快速建站系列之在线留言

    有两种方法 第一种方法: 利用留言板插件,在后台模板中,安装留言板插件使用,这里先不展开. 第二种方法: 表单向导的适用场合: 如果一个前台页面只是为了提交表单数据,那么就非常适合适用表单向导的功能, ...

  8. firefox扩展开发(二):用XUL创建窗口控件

    firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...

  9. python系列之(3)爬取豆瓣图书数据

    上次介绍了beautifulsoup的使用,那就来进行运用下吧.本篇将主要介绍通过爬取豆瓣图书的信息,存储到sqlite数据库进行分析. 1.sqlite SQLite是一个进程内的库,实现了自给自足 ...

  10. git操作——git pull 撤销误操作,恢复本地代码

    需求 开发的代码还未commit到git本地仓库,就从git远程仓库上pull了代码,导致开发的代码直接被冲掉,需要退回到上一个版本代码. 操作 进入到项目git本地仓库文件夹下 打开cmd窗口,执行 ...