传送门

•题意

  给你三个矩形,依次编号为 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 行的判断语句的放置位置以及如何确定判断条件;

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

最新文章

  1. 如何安装一个优秀的BUG管理平台——真的是手把手教学!
  2. 朴素贝叶斯算法的python实现
  3. iOS证书失效
  4. Codeforces Round #253 Div2 D.Andrey and Problem 概率+贪心
  5. python 将pdf分页后插入至word中
  6. DotNetBar v12.5.0.2 Fully Cracked
  7. 在python3.5中使用pip
  8. Highcharts属性详解
  9. 可以binidng属性的属性【项目】
  10. python 3.6 tkinter+urllib+json 火车车次信息查询
  11. java面试2(java技术栈和Hollis面试内容分享)
  12. linux常用基础命令(一)
  13. CSS魔法堂:稍稍深入伪类选择器
  14. Revit对齐工具之多重对齐
  15. phpexcel如何读取带公式的excel文件得到值呢?
  16. POJ-1426.Findthemultiple.(BFS)
  17. golang学习笔记 ---dup
  18. laravel 的passport Oauth 认证登录请求 的 oauth_token 重置
  19. CAN总线过载帧
  20. gcc6.3编译c++11的程序链接opencv时字符型函数未定义

热门文章

  1. 项目管理知识图谱OR架构图
  2. ORACLE 所有 表 记录 条数
  3. Codeforces 436C
  4. bash 小技巧
  5. R语言处理Web数据
  6. 【OI】操作树
  7. 2018-2-13-win10-uwp-获取按钮鼠标左键按下
  8. Android7.0 添加快速设定Quick Settings Tile
  9. C++五:重载 多态
  10. hibernate 出现Caused by: java.sql.SQLException: Column &#39;id&#39; not found.异常