能力提升综合题单Part2 基础算法 第一天

简介: 能力提升综合题单Part2 基础算法 第一天

https://www.luogu.com.cn/problem/P1003

P1003 [NOIP2011 提高组] 铺地毯

题目描述

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

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

输入格式

输入共 n + 2行。

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

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

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

输出格式

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

输入输出样例

输入 #1

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

输出 1

3

输入 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号地毯。

【数据范围】

image.png

C++代码如下

#include <iostream>
using namespace std;
int N = 10010;
int main()
{
    int n;
    cin >> n;
    int a[N], b[N], g[N], k[N];
    for (int i = 1 ;i <= n; i++) 
    {
        cin >> a[i] >> b[i] >> g[i] >> k[i];    
    }
    int x,y;
    cin >> x >> y;
    // 后来的会覆盖前面的,因此需要逆序查找
    for (int i = n; i >= 1; i--) 
    {
        if (x >= a[i] && y >= b[i] && x <= a[i] + g[i] && y <= b[i] + k[i]) 
        {
            cout << i << endl;
            return 0;
        }
    }
    cout << "-1" << endl;
    return 0;
}

Java代码如下

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(reader.readLine());
        int[] a = new int[n + 1];
        int[] b = new int[n + 1];
        int[] g = new int[n + 1];
        int[] k = new int[n + 1];
        String[][] str = new String[n + 1][4];
        for (int i = 1; i <= n; i++) {
            str[i] = reader.readLine().split(" ");
        }
        for (int i = 1; i <= n; i++) {
            a[i] = Integer.parseInt(str[i][0]);
            b[i] = Integer.parseInt(str[i][1]);
            g[i] = Integer.parseInt(str[i][2]);
            k[i] = Integer.parseInt(str[i][3]);
        }
        String[] s = reader.readLine().split(" ");
        int x = Integer.parseInt(s[0]);
        int y = Integer.parseInt(s[1]);
        boolean flag = false;
        for (int i = n; i >= 1; i--) {
            if (x >= a[i] && x <= a[i] + g[i] && y >= b[i] && y <= b[i] + k[i]) {
                flag = true;
                writer.write(i + "\n");
                break;
            }
        }
        if (!flag) {
            writer.write("-1\n");
        }
        writer.flush();
        writer.close();
        reader.close();
    }
}


相关文章
|
23天前
|
机器学习/深度学习
ProCo: 无限contrastive pairs的长尾对比学习——TPAMI 2024最新成果解读
【10月更文挑战第3天】《ProCo: Infinite Contrastive Pairs for Long-Tailed Contrastive Learning》是TPAMI 2024的最新成果,针对现实世界图像数据中的长尾分布问题,提出了一种通过生成无限对比对来提升模型效果的方法。ProCo包括构建原型网络、生成对比对、设计对比损失函数及优化策略。实验结果显示,ProCo在多个长尾数据集上显著优于现有方法。此外,还提供了简化版示例代码,便于读者理解和应用。未来,该领域有望涌现更多创新研究。
31 3
|
3月前
|
自然语言处理 Serverless Docker
量化交易大揭秘:如何将TA-Lib神兵利器部署于云端函数计算,让策略飞升!
【8月更文挑战第8天】在量化交易中,TA-Lib作为技术分析库备受青睐,支持多语言包括Python。本教程指导如何将其移植至函数计算平台,实现云端交易策略。首先安装Python与TA-Lib;接着选择云服务商并创建实例。确认TA-Lib与平台Python版本兼容,必要时构建自定义运行时。使用`pip`安装TA-Lib并打包依赖。编写函数计算代码示例,如计算移动平均线。部署代码与依赖至平台,定制Dockerfile以支持自定义运行时。最后,通过平台测试功能验证功能正确性。完成移植后,即可享受Serverless架构的自动扩展与成本效益优势。
60 4
|
3月前
|
算法 关系型数据库 程序员
第一周算法设计与分析:A : log2(N)
这篇文章介绍了解决算法问题"输入一个数N,输出log2N(向下取整)"的三种编程思路,包括使用对数函数和幂函数的转换方法,以及避免浮点数精度问题的整数逼近方法。
|
安全 C++
CSDN三道简单题:合并检测、星期一、特别数的和
CSDN三道简单题:合并检测、星期一、特别数的和
131 0
CSDN三道简单题:合并检测、星期一、特别数的和
|
算法 图形学
计算机图形学 期末复习part3:论述
计算机图形学 期末复习part3:论述
139 0
计算机图形学 期末复习part3:论述
|
人工智能 大数据 程序员
DayDayUp:2019.12.31罗振宇2020年跨年演讲《时间的朋友》读后有感—思维决定一个人的上限,能力决定一个人的下限
DayDayUp:2019.12.31罗振宇2020年跨年演讲《时间的朋友》读后有感—思维决定一个人的上限,能力决定一个人的下限
DayDayUp:2019.12.31罗振宇2020年跨年演讲《时间的朋友》读后有感—思维决定一个人的上限,能力决定一个人的下限
|
存储 算法
【阿里云资讯】Sort Benchmark 2016 年排序竞赛结果: 100T 数据排序谁的花费更少?
Sort Benchmark 2016 年排序竞赛结果已出,其中,CloudSort 被称为“云计算效率之争”,这项目赛比拼的是完成 100T 数据排序谁的花费更少,也是 Sortbenchmark 的各项比赛当中最具现实意义的项目之一。
4883 0
PM - 产品思想篇
PM - 产品思想篇
96 0
PM - 产品思想篇
|
算法 C++
算法学习之路|日期问题
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
1570 0