能力提升综合题单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();
    }
}


相关文章
|
1月前
|
机器学习/深度学习
ProCo: 无限contrastive pairs的长尾对比学习——TPAMI 2024最新成果解读
【10月更文挑战第3天】《ProCo: Infinite Contrastive Pairs for Long-Tailed Contrastive Learning》是TPAMI 2024的最新成果,针对现实世界图像数据中的长尾分布问题,提出了一种通过生成无限对比对来提升模型效果的方法。ProCo包括构建原型网络、生成对比对、设计对比损失函数及优化策略。实验结果显示,ProCo在多个长尾数据集上显著优于现有方法。此外,还提供了简化版示例代码,便于读者理解和应用。未来,该领域有望涌现更多创新研究。
41 3
|
3月前
|
算法 关系型数据库 程序员
第一周算法设计与分析:A : log2(N)
这篇文章介绍了解决算法问题"输入一个数N,输出log2N(向下取整)"的三种编程思路,包括使用对数函数和幂函数的转换方法,以及避免浮点数精度问题的整数逼近方法。
|
5月前
|
存储 SQL 算法
高效日程管理:利用区间合并算法优化活动安排【python LeetCode57】
高效日程管理:利用区间合并算法优化活动安排【python LeetCode57】
DataScience&ML:金融科技领域之迁徙率(Flow Rate)表的简介、案例应用之详细攻略
DataScience&ML:金融科技领域之迁徙率(Flow Rate)表的简介、案例应用之详细攻略
|
机器学习/深度学习 人工智能 算法
机器学习实战篇——用支撑向量算法在Kaggle上跑个分
之前写了关于人工智能和机器学习的理论基础文章,今天就理论联系实际,用机器学习算法跑个分。 机器学习最重要的就是数据,Kaggle平台提供了大量数据为机器学习的学习者和研究者提供一个跑分的平台。
1262 0
|
算法 C++
算法学习之路|日期问题
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
1571 0
|
算法 人工智能
算法学习之路|爱丁顿数
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。
1040 0
|
算法
算法学习之路|数零壹
给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0、多少1。例如给定字符串“PAT (Basic)”,其字母序号之和为:16+1+20+2+1+19+9+3=71,而71的二进制是1000111,即有3个0、4个1。
986 0
|
算法 测试技术
算法学习之路|写出这个数(20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
1300 0
|
算法 测试技术 人工智能
算法学习之路|个位数统计
给定一个k位整数,请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。
1054 0