码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • # [NOIP2011 提高组] 铺地毯


    合集 - 模拟(5)
    1.看病排队 - 升级版04-292.2391. 收集垃圾的最少总时间05-11
    3.# [NOIP2011 提高组] 铺地毯05-26
    4.# [NOIP2014 提高组] 生活大爆炸版石头剪刀布05-275.#[NOIP2003 普及组] 乒乓球05-29
    收起

    传送锚点:https://www.luogu.com.cn/problem/P1003

    题目描述

    为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n 张地毯,编号从 1 到 n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

    地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

    输入格式

    输入共 n+2 行。

    第一行,一个整数 n,表示总共有 n 张地毯。

    接下来的 n 行中,第 i+1 行表示编号 i 的地毯的信息,包含四个整数 a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a,b) 以及地毯在 x 轴和 y 轴方向的长度。

    第 n+2 行包含两个整数 x 和 y,表示所求的地面的点的坐标 (x,y)。

    输出格式

    输出共 1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出 -1。

    样例 #1

    样例输入 #1

    3
    1 0 2 3
    0 2 3 3
    2 1 3 3
    2 2
    

    样例输出 #1

    3
    

    样例 #2

    样例输入 #2

    3
    1 0 2 3
    0 2 3 3
    2 1 3 3
    4 5
    

    样例输出 #2

    -1
    

    提示

    【样例解释 1】

    如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点 (2,2) 的最上面一张地毯是 3 号地毯。

    https://cdn.luogu.com.cn/upload/image_hosting/q4izfzpb.png

    【数据范围】

    对于 30% 的数据,有 n≤2。
    对于 50% 的数据,0≤a,b,g,k≤100。
    对于 100% 的数据,有 0≤n≤104, 0≤a,b,g,k≤105。

    noip2011 提高组 day1 第 1 题。

    思路:

    利用结构体存储地毯左下角和右上角在x、y面坐标,然后我们在倒序遍历,如果查找的点在当前所遍历地毯内,直接输出编号,如果遍历完仍没有,则输出-1

    code

    #include 
    using namespace std;
    const int N = 1e4 + 10;
    struct Carpet{
        int a,b,c,d;//c、d分别为毛毯右上角横、纵坐标
    } carpet[N];
    int main() {
        int n;
        cin >> n;
        for(int i = 1; i <= n; i++){
            int a,b,len_x,len_y;
            cin >> a >> b >> len_x >> len_y;
            carpet[i].a = a;
            carpet[i].b = b;
            carpet[i].c = a + len_x;
            carpet[i].d = b + len_y;
        }
        int x,y;
        cin >> x >> y;
        bool flag = false;//看是否被覆盖
        for(int i = n; i >= 1; i--){
            if(x >= carpet[i].a && x <= carpet[i].c){
                if(y >= carpet[i].b && y <= carpet[i].d){
                    cout << i << endl;
                    return 0;
                }
            }
    
        }
        if(!flag){
            cout << "-1" << endl;
        }
        return 0;
    }
    
    
  • 相关阅读:
    Maya制作骑自行车的女孩模型
    ArrayList原理
    平均数的增长百分比
    MySQL安装
    starrocks启动和停止和重启脚本
    基于vue框架的4S店汽车维修保养管理系统28a7y(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
    Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    Qt第八章:安装Qt Creator教程
    数据分析---matplotlib2
  • 原文地址:https://www.cnblogs.com/6Luffy6/p/18213807
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号