传送门

•题意

  给你三个矩形,依次编号为 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. Python科学计算生态圈

  2. 如何在Liferay Custom JSP Fragment项目中加Java代码

    先附上大神原文链接 Adding Dependencies to JSP Fragment Bundles 在开发Liferay的过程中,我们常常会利用Module Fragment来修改Lifera ...

  3. js写的滑动解锁

    css部分 *{ margin:; padding:; box-sizing: border-box; -webkit-touch-callout: none; -webkit-user-select ...

  4. C++模板进阶指南:SFINAE

    C++模板进阶指南:SFINAE 空明流转(https://zhuanlan.zhihu.com/p/21314708) SFINAE可以说是C++模板进阶的门槛之一,如果选择一个论题来测试对C++模 ...

  5. win10下Anaconda3配置环境变量

    有时候在win10安装好Anaconda3后,使用conda命令时依然会出现: C:\Users\dell\PycharmProjects\pytorch>conda list 'conda' ...

  6. Myeclipse自定义注释

    1.设置模板 Windows—Preference—Java—Code Style—Code Templates 图中, Configure generated code and comments中的 ...

  7. 2019-3-21-win10-uwp-修改图片质量压缩图片

    title author date CreateTime categories win10 uwp 修改图片质量压缩图片 lindexi 2019-03-21 15:29:20 +0800 2019- ...

  8. UVA_489:Hangman Judge

    Language:C++ 4.8.2 #include<stdio.h> #include<string.h> int main(void) { ]; ]; ]; ]; // ...

  9. BZOJ1878 洛谷1972 HH的项链题解

    洛谷链接 BZOJ链接 看到这样不用修改的题目,应该佷容易就联想到了离线来处理. 我们发现若将询问按照r来排序,排完后每次对答案有贡献的仅是每个颜色最后出现的位置 我们用next[i]表示i处颜色之前 ...

  10. hdu 1839 Delay Constrained Maximum Capacity Path(spfa+二分)

    Delay Constrained Maximum Capacity Path Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65 ...