Codeforces1216C White Sheet【矩形面积交】【计算几何】

题意:

给你三个矩形的左下角和右上角的下标
请问第二个矩形和第三个矩形是否能完全覆盖第一个矩形,能输出"NO",否则输出"YES"

思路:

计算几何模板题
通过面积之间的关系可以得出第二个矩形和第三个矩形一共覆盖了第一个矩形多少面积
进行判断
面积 = 第一个矩形与第二个矩形的交 + 第一个矩形与第三个矩形的交 + 三个矩形的交

我的代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
void check(ll &a) {
	if(a < 0) a = 0;
}
int main() {
	ll x1, x2,x3, x4,x5, x6;
	ll y1,y2,y3, y4,y5, y6;
	cin>>x1>>y1>>x2>>y2;
	cin>>x3>>y3>>x4>>y4;
	cin>>x5>>y5>>x6>>y6;
	ll ans1 = (min(min(x4, x6), x2) - max(max(x3, x5),x1)) * (min(min(y4, y6),y2) - max(max(y3, y5),y1));
	ll ans2 = (min(x2, x6) - max(x1, x5)) * (min(y2, y6) - max(y1, y5));
	ll ans3 = (min(x4, x2) - max(x3, x1)) * (min(y4, y2) - max(y3, y1));
	ll ans = (x2 - x1) * (y2 - y1);
	check(ans1);
	check(ans2);
	check(ans3);
	if(ans == ans2 + ans3 - ans1){
		puts("NO"); 
	}else{
		puts("YES"); 
	} 

}

dalao的代码:

#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
const ll MOD = 1e9 + 7;

struct Rect {
	ll x1, y1, x2, y2;

	ll area() const {
		if (x2 < x1 || y2 < y1) return 0;
		else return -
	}
};
Rect its(Rect a, Rect b) {
	Rect res;
	res.x1 = max(a.x1, b.x1);
	res.x2 = min(a.x2, b.x2);
	res.y1 = max(a.y1, b.y1);
	res.y2 = min(a.y2, b.y2);
	return res;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	Rect w, b1, b2;
	cin >> w.x1 >> w.y1 >> w.x2 >> w.y2;
	cin >> b1.x1 >> b1.y1 >> b1.x2 >> b1.y2;
	cin >> b2.x1 >> b2.y1 >> b2.x2 >> b2.y2;

	ll res = w.area() - its(w, b1).area() - its(w, b2).area() + its(w, its(b1, b2)).area();
	if (res > 0) cout << "YES\n";
	else cout << "NO\n";
}
全部评论

相关推荐

昨天 16:40
已编辑
门头沟学院 C++
26学院本太难了,很多公司机筛就给我刷了。机会都难拿到如果是简历存在问题也欢迎拷打————————————————————分割线——————————————————————2026.3.4更新:发完贴之后,时不时投递又收到了不少的笔试/面试邀请。主要是之前投递简历出去之后基本上都是沉默状态,年后好转了不少timeline:2026.01.21&nbsp;文远知行笔试,半年多没刷算法题&nbsp;-&gt;挂&nbsp;(后续HR说春招可以重新安排笔试)2026.2.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;小鹏汇天&nbsp;技术一面,第二周收到结果&nbsp;-&gt;挂2026.2.12&nbsp;&nbsp;&nbsp;大众Cariad代招&nbsp;技术二面&nbsp;-&gt;Offer2026.2.28&nbsp;&nbsp;&nbsp;多益网络技术面试,由于风评太差,一直在犹豫要不要接面试&nbsp;-&gt;推迟-----------分割线-----------2026.3&nbsp;月前的某一天,临时去电网报名了二批计算机岗位的笔试2026.3.6&nbsp;从上家公司实习离职,氛围最好的一家公司,leader&nbsp;说可以帮忙转正,但是流程太长,而且我们部门据说只有一个&nbsp;hc,更想要研究生,我很有可能是会被签外包公司在这里干活,就离职了。2026.3.9&nbsp;入职新公司,大众Cariad&nbsp;以外部公司的身份进组,项目组签了三年,后续三年应该都可以在这里呆,不知道有没有希望原地跳槽。2026.3.10&nbsp;电网考试居然说我通过资格审查了,短信约我去参加资格审查,请假一天,买了&nbsp;12&nbsp;号晚上的机票回成都2026.3.15&nbsp;参加国家电网计算机类笔试2026.3.17&nbsp;电网出成绩了,感觉很低。觉得已经🈚️了2026.3.18&nbsp;收到电网面试通知,通知&nbsp;3.22-3.25&nbsp;这个时间去面试,我的岗位只招&nbsp;1&nbsp;个人。据说面试只有&nbsp;2-3&nbsp;人,不知道能不能成功----------分割线-----------2026.3.21&nbsp;电网面试结束,感觉回答的还勉勉强强,大概是2个岗位分别招1个人,一共11人面试,实际来了9人2026.3.27&nbsp;出面试成绩,满分100分,早上10:20左右发现面试成绩46,我震惊了,没截图,后面过了十分钟重新看发现面试成绩给我改成58了。但同样震惊。朋友问我是不是把面试官打了,哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务