洛谷

洛谷 P1003 [NOIP 2011 提高组] 铺地毯

#include<iostream>
#include<vector>
using namespace std;
struct square{
    int x1, y1, x2, y2;
};
vector<square> sq;

int main(){
    int N;
    cin >> N;
    while(N--){
        int a, b, c, d;
        cin >> a >> b >> c >> d;
        sq.push_back({a, b, a + c, b + d});
    }
    int tx, ty, ans = 0;
    cin >> tx >> ty;
    for(auto i = 0; i < sq.size(); i++){
        if(tx >= sq[i].x1 && tx <= sq[i].x2 && ty >= sq[i].y1 && ty <= sq[i].y2){
            ans = i + 1;
        }
    }
    cout << ans;
    return 0;
}
#include<iostream>
using namespace std;
struct MyStruct
{
    int a, b, g, k;
};
int n, x, y, ans = -1;
MyStruct a[10005];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i].a >> a[i].b >> a[i].g >> a[i].k;
    }
    cin >> x >> y;
    for (int i = 1; i <= n; i++)
    {
        if (x >= a[i].a && x <= a[i].a + a[i].g && y >= a[i].b && y <= a[i].b + a[i].k) 
        {
            ans = i;
        }
    }
    cout << ans;
    return 0;
}
// 包含输入输出流库,用于基本的输入输出操作
#include<iostream>
// 包含向量容器库,用于动态存储多个矩形信息
#include<vector>
// 使用标准命名空间,避免在代码中重复书写std::前缀
using namespace std;

// 定义一个结构体square,用于存储矩形的坐标信息
struct square{
    int x1, y1;  // 矩形左下角顶点的x和y坐标
    int x2, y2;  // 矩形右上角顶点的x和y坐标
};

// 声明一个向量容器sq,用于存储所有矩形的信息
vector<square> sq;

int main(){
    int N;  // 用于存储矩形的数量
    cin >> N;  // 从标准输入读取矩形的数量

    // 循环读取N个矩形的信息
    while(N--){
        int a, b, c, d;  // a,b表示矩形左下角坐标,c,d表示矩形的宽和高
        cin >> a >> b >> c >> d;  // 读取矩形参数

        // 将矩形的两个对角顶点坐标存入向量中
        // 左下角为(a,b),右上角为(a+c, b+d),因为c是宽度,d是高度
        sq.push_back({a, b, a + c, b + d});
    }

    int tx, ty;  // 用于存储目标点的坐标
    int ans = 0;  // 用于存储结果,初始值为0表示没有矩形包含目标点
    cin >> tx >> ty;  // 读取目标点的坐标

    // 遍历所有矩形,判断目标点是否在矩形内部
    for(auto i = 0; i < sq.size(); i++){
        // 检查目标点(tx, ty)是否在当前矩形[i]的内部或边界上
        // 条件:tx在x1和x2之间,且ty在y1和y2之间
        if(tx >= sq[i].x1 && tx <= sq[i].x2 && ty >= sq[i].y1 && ty <= sq[i].y2){
            ans = i + 1;  // 如果包含,更新结果为当前矩形的序号(从1开始)
        }
    }

    // 输出结果,即包含目标点的最后一个矩形的序号,若没有则输出0
    cout << ans;
    return 0;
}