CCF CSP 2023年5月认证试题 202303-1田地丈量 python

参考: CCF-CSP真题《202303-1 田地丈量》思路+python,c++,java满分题解

思路

  • 通过观察example可知:田地与所划定区域重叠的条件是田地的最小坐标点(左下坐标)或最大最标点(右上)位于所划定的区域内。

  • 按照这个逻辑我们可以进一步推出:田地与所划定区域不存在重叠区域的条件是最小坐标点(左下)大于划定区域的最大坐标点(右上),或田地最大坐标点(右上)小于划定区域的最小坐标点(原点)。

  • 重叠区域的右边界即为ax2取最小值,左边界为0x1取最大值,重叠面积的横轴长度即为二者之差,纵轴长度显然可按照这个思想得出。

  • 故我们在接收田地位置坐标时可以顺带直接判断这个田地位置是否与所划定区域重叠,如果不重叠,则直接抛弃这个坐标点,其不符合我们的求重叠面积的要求。

# 202303-1田地丈量

n, a, b = map(eval, input().split(' '))
area = 0

for i in range(n):
    temp = list(map(eval, input().split(' ')))
    # 判断矩阵位置最小坐标点是否大于划定区域,大于则无相交位置
    if temp[0] >= a or temp[1] >= b:
        continue
    # 判断矩阵最大坐标点位置是否小于划定区域,小于则无相交位置
    if temp[2] <= 0 or temp[3] <= 0:
        continue
    # 最大或最小坐标点位于划定坐标区域内,有重叠区域,可进行面积计算
    area += ((min(temp[2], a) - max(temp[0], 0)) * (min(temp[3], b) - max(temp[1], 0)))

print(area)

CSP OJ判题结果

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

圆圆的东柳君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值