29次-CCF-第一题-田地丈量

该文章描述了一个计算两个矩形重合面积的编程问题。作者在考试中花了超过30分钟解决这个问题,虽然代码实现很简单,但理解题意花费了一些时间。矩形的坐标和重合条件被详细分析,然后给出了AC(Accepted)的C++代码解冔,通过计算最大和最小边界来确定重合部分,并求出面积。
摘要由CSDN通过智能技术生成

1 题目链接

进去后点,模拟考试就可以看到题目了
AC证明:
在这里插入图片描述

2 分析

前言:
离谱,这个题考试的时候做了30+min才写出来,但是代码还贼简单。
你说它难吧,代码这么简单,你说不难吧,我在这个题还卡了那么久。(菜鸡痛哭)

正话:
题目的意思就是 计算两个给了坐标的矩形的重合面积,怎么计算呢?
——计算重合矩形的坐标。

先考虑可以重合的情况,就会发现重合矩形的坐标是他们各个坐标往聚合中心方向的坐标值
也就是说重合矩形的左下角的坐标(l,down)和右上角的坐标(r,up)是(x1,y1)(x2,y2)(0,0)(a,b)这四个坐标点往他们中心收的值。

上面表达得有点概念化,具体说就是,
重合面积的左边界限一定是0和x1的更大的一个,对吧
重合面积的右边界限一定是b和x2的更小的一个,对吧
重合面积的上边界限一定是0和y2的更小的一个,对吧
重合面积的下边界限一定是0和y1的更大的一个,对吧

最后判断下是否重合(不重合的话,计算出来的矩形坐标肯定是不成形的)

  1. 没重合就不管。
  2. 重合就可以通过重合矩形的坐标计算重合面积。

3 AC代码

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int sum=0;

int main() {
	int l,r,up,down,x1,y1,x2,y2;
	cin>>n>>a>>b;
	for(int i=0; i<n; i++) {//计算重合矩形的坐标
		cin>>x1>>y1>>x2>>y2;
		l=max(0,x1);
		r=min(a,x2);
		up=min(b,y2);
		down=max(0,y1);
		if(r>l &&up>down)//如果有重合
			sum+=(r-l)*(up-down);
	}
	cout<<sum<<endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MORE_77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值