首页 > 其他分享 >5253 铺地毯 枚举 模拟

5253 铺地毯 枚举 模拟

时间:2024-10-17 16:45:06浏览次数:7  
标签:5253 读取 覆盖 检查 int d% 枚举 地毯

思路分析

  1. 输入处理:程序首先读取地毯的数量n。然后依次读取每张地毯的信息,包括左下角坐标(a, b)和尺寸(c, d),并存储在数组中。  
  • 查询点的输入:读取要查询的点的坐标(x, y)。
  3. 检查覆盖:  
  • 从最后一张地毯开始,依次向前检查每张地毯是否覆盖点(x, y)。
 
  • 检查条件是:x在地毯的x范围内(a[i] <= x <= a[i] + c[i])且y在地毯的y范围内(b[i] <= y <= b[i] + d[i])。
  4. 输出结果:  
  • 如果找到覆盖点(x, y)的地毯,输出该地毯的编号i。
 
  • 如果没有任何地毯覆盖点(x, y),输出-1。
 

关键点

 
  • 从后向前检查:因为后铺的地毯会覆盖前面的地毯,所以从最后一张地毯开始检查,确保找到的是最上面的地毯。
 
  • 边界条件:在地毯的边界和顶点上的点也算被覆盖,因此检查条件包括等号
#include<bits/stdc++.h>
#define f(i,s,e) for(int i = s; i <= e; i++) // 定义一个宏,用于简化for循环
#define ll long long
using namespace std;

const int N = 1e4+10, inf = 0x3f3f3f3f;
int n, a[N], b[N], c[N], d[N]; // 定义数组存储地毯信息

int main() {
    cin >> n; // 读取地毯的数量
    f(i, 1, n) {
        // 读取每张地毯的信息:左下角坐标(a, b)和尺寸(c, d)
        scanf("%d%d%d%d", &a[i], &b[i], &c[i], &d[i]);
    }
    
    int x, y; 
    cin >> x >> y; // 读取要查询的点的坐标(x, y)

    // 从最后一张地毯开始检查,找到覆盖点(x, y)的最上面一张地毯
    for(int i = n; i >= 1; i--) {
        // 检查点(x, y)是否在地毯i的范围内
        if((a[i] <= x && x <= a[i] + c[i]) && (b[i] <= y && y <= b[i] + d[i])) {
            cout << i; // 输出地毯编号
            return 0; // 结束程序
        }
    }
    
    cout << -1; // 如果没有地毯覆盖点(x, y),输出-1
    return 0;
}

 

标签:5253,读取,覆盖,检查,int,d%,枚举,地毯
From: https://www.cnblogs.com/jyssh/p/18472627

相关文章

  • 7840 十全数 枚举check
    思路分析 1. 定义十全数:十全数是指一个数的各位数字之和等于10的数。 2. 输入处理:程序首先读取一个正整数k,表示需要找到的第k个十全数。 枚举正整数:从1开始,逐个检查每个正整数是否是十全数。 4. 检查函数check: 计算一个数n的各位数字之和。 如果和等于1......
  • 1601 添加运算符 枚举 递归dfs
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e3+10,inf=0x3f3f3f3f;inta[N],vis[N];intn,ans;//计算函数:根据运算符i对sum和a[x]进行运算intcal(intsum,inti,intx){if(i==1)returnsum+a[x];//加法......
  • 枚举值转换(字符串转换为枚举和整数转换为枚举)
    枚举值转换(字符串转换为枚举和整数转换为枚举) 假设定义了一个这样的枚举类型:enum MyEnum{aa = 1,bb = 2 } 1、字符串转换为枚举:string strA = "aa";MyEnummyEnum = (MyEnum)Enum.Parse(typeof(MyEnum),strA);上面的方法是区分大小写的,也就是说,如......
  • c#声明枚举,通过枚举int获取枚举value、通过枚举value获取int值、判断string值是否存在
    c#声明枚举,通过枚举int获取枚举value、通过枚举value获取int值、判断string值是否存在枚举中 1、声明枚举每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。注意:第一个枚举成员的默认值为整型的0,后续枚举成员的值在前......
  • qt5报错无法枚举xxx字体:qt.qpa.fonts: Unable to enumerate family ' "WenYue XinQing
    问题描述:使用qt5时,出现错误提示:qt.qpa.fonts:Unabletoenumeratefamily'"WenYueXinQingNianTi(Non-CommercialUse)"'虽然不影响正常使用,但是还是希望解决。猜测:可能是qt5在自动枚举字体时,系统中安装的字体名称过长或其他参数不合规导致qt5无法枚举。如果此字体不是项......
  • CF1814B. Long Legs 题解 枚举
    题目链接:https://codeforces.com/problemset/problem/1814/B题目大意有一个无限大的二维平面,我们用\((x,y)\)来表示平面中横坐标为\(x\)纵坐标为\(y\)的那个位置。一个机器人被放置在该二维平面的\((0,0)\)位置中。该机器人的腿长可以调节。最初,它的腿长为\(1\)。......
  • 第2课-枚举、排序、贪心
    前言如果认为自己代码没问题,换行问题,边界问题等都处理了还是不行,可以试试交C++(GCC9)该类型,因为部分题目是UVA上的老题,可能不支持新版本的C++。如果提交UNKNOWNERROR,应该是没绑定UVA账号,洛谷右上角个人设置里去填写注册一下即可。除法Division思路这个题一定要注意输......
  • 再谈java枚举enum
    一、认识枚举枚举是一种特殊类枚举的定义:修饰符enum枚举名{枚举项1,枚举项2,枚举项3;其他成员;}注意:枚举的第一行只能写枚举项,多个枚举项用逗号(,),隔开每一个枚举项都是一个常量(不可改变值),且都指向一个该枚举的对象二、为什么要使用枚举例如,有这么一方......
  • 【C语言】自定义类型:联合体和枚举
    文章目录一、联合体(共同体)1.联合体类型的声明2.联合体的特点测试1测试23.联合体大小的计算例1例24.联合体小练习5.结构体和联合体内存占用的对比6.联合体的应用二、枚举1.枚举类型的声明2.枚举类型的优点3.枚举类型的使用一、联合体(共同体)1.联合体类型的声......
  • Python 枚举 Enum
    Python中的枚举数据类型(Enum)_pythonenum-CSDN博客默认属性name和valuefromenumimportEnumclassWeekday(Enum):monday=1tuesday=2wednesday=3thirsday=4friday=5saturday=6sunday=7print(Weekday.wednesday)......