洛谷——铺地毯

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, cover[10001][4], a, b, flag = 0;
    cin >> n;
    for (int i = 1; i <= n; ++ i)
        cin >> cover[i][0] >> cover[i][1] >> cover[i][2] >> cover[i][3];
    cin >> a >> b;
    while (!flag && n)
    {
        if (a >= cover[n][0] && b >= cover[n][1] && a <= cover[n][0] + cover[n][2] && b <= cover[n][1] + cover[n][3])
        {
            flag = 1;
            break; 
        } 
        n --;    
    }
    if (flag)
        cout << n;
    else
        cout << "-1";
}
* 因为要找覆盖这个点的最上面一块地毯,因此从最后一组数据开始判断。
* 如果题目给的点在这块地毯覆盖范围内,则结束循环。
* 四个整数 a, b, g, k 分别表示铺设地毯的左下角的坐标 (a, b)以及地毯在 x 轴和 y 轴方向的长度
 (代码中用 cover[i][0],cover[i][1]  cover[i][2]  cover[i][3]表示)
  覆盖范围是以 (a, b), (a+g,b),(a,b+k),(a+g,b+k)为顶点的矩形。
  因此只要题目给定的坐标x,y(代码中用的 a,b 表示  qwq) 满足条件x >= a && y >= b && x <= a+g && y <= b+k  
  即表示该点在地毯覆盖范围内。
* 用flag判断,找到了赋值为1,退出循环后如果flag还是为0,说明此处没有被地毯覆盖。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值