CodeForces 1216C(假的计算几何+扫描线)
•题意
给你三个矩形,依次编号为 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
•Wa过的样例
此样例很明确的说明了 Code 中第 49~50 行的判断语句的放置位置以及如何确定判断条件;
还有一个就是上述题解中的样例,明确的说明了为什么要扫描两次;
CodeForces 1216C(假的计算几何+扫描线)的更多相关文章
- BZOJ 1845: [Cqoi2005] 三角形面积并 [计算几何 扫描线]
1845: [Cqoi2005] 三角形面积并 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 1151 Solved: 313[Submit][Stat ...
- Code Chef IMPO(计算几何+扫描线+积分)
题面 传送门 前置芝士 扫描线,积分求面积 题解 我怎么老是忘了积分可以求面积-- 首先,这两个投影的最小的\(x\)坐标和最大的\(x\)坐标必须相等,否则肯定无解 我们考虑一种方法,枚举\(x\) ...
- Five Dimensional Points CodeForces - 851C (计算几何+暴力)
C. Five Dimensional Points time limit per test 2 seconds memory limit per test 256 megabytes input ...
- HDU 4116 Fruit Ninja ( 计算几何 + 扫描线 )
给你最多1000个圆,问画一条直线最多能与几个圆相交,相切也算. 显然临界条件是这条线是某两圆的公切线,最容易想到的就是每两两圆求出所有公切线,暴力判断一下. 可惜圆有1000个,时间复杂度太高. 网 ...
- Codeforces 350D(计算几何)
要点 用A.B.C一般式确定每条直线 将合法的圆心中点存到每条直线所属的vector中 枚举所有线段,二分后\(O(1)\)得到其中存在多少答案,累加 #include <cstdio> ...
- Codeforces 703C(计算几何)
C. Chris and Road time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces 618C(计算几何)
C. Constellation time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- Codeforces 559A(计算几何)
A. Gerald's Hexagon time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 牛客多校第九场 J Symmetrical Painting 计算几何/扫描线
题意: 平面上有几个宽度相同的矩形区域被涂黑了,让你找到一条横线横截若干个矩形,把这些黑色部分抠下来一部分使得它们以这条横线为对称轴,求能抠下来的最大面积. 题解: 在随着对称轴上移的过程中,必然有一 ...
随机推荐
- querySelector与getElementBy系列的区别
getElementBy系列 document.getElementsByTagName('tag'); document.getElementById('id'); document.getElem ...
- day38 16-Spring的Bean的装配:注解的方式
Struts 2和hibernate也使用注解,但是使用注解在以后的开发中应用不多.但是可以说在整合的时候如何进行注解开发.在Spring中,注解必须会玩. package cn.itcast.spr ...
- QT中,控件显示不下,用...表示
void CommonHelper::setQLabelText(QLabel *label, const QString &text) { QFontMetrics cs(label-> ...
- JavaScript--函数表达式与函数声明的区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【祈福】NOIP战后占卜:众星陨落,天命难违
Day1 加上看题,做完第一题之后我已经只剩两个小时半了. 然后凭着一定要做完第一题和第二题的坚定信念. 我耗到了只剩一个小时半,结果正解还是没想出来. 其实我从只剩两小时的时候,就有了打第二题的暴力 ...
- 洛谷 P1342 请柬 最短路+Dijkstra算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1342 请柬 题目描述 在电视时代,没有多少人观看戏 ...
- Effective C++: 06继承与面向对象设计
32:确定你的public继承塑模出is-a关系 以C++进行面向对象编程,最重要的一个规则是:public继承表示的是"is-a"(是一种)的关系. 如果令class D以pub ...
- python爬虫:一些爬虫常用的技巧
1.基本抓取网页 get方法 import urllib2 url = "http://www.baidu.com" response = urllib2.urlopen(url) ...
- asp.net ajax客户端框架如何调用Web Service
asp.net ajax客户端框架如何调用Web Service 1:Web Service类添加 [System.Web.Script.Services.ScriptService]特性2:需要异步 ...
- 字符串Hash算法比较
基本概念所谓完美哈希函数,就是指没有冲突的哈希函数,即对任意的 key1 != key2 有h(key1) != h(key2).设定义域为X,值域为Y, n=|X|,m=|Y|,那么肯定有m> ...