洛谷 luogu P1003 铺地毯

问题 https://www.luogu.org/problemnew/show/P1003

这道题不难,可以用来热身。

问题是有个小坑,一开始想的是直接打n*n的表,每一次输入一个地毯的坐标的时候,把他覆盖的所有(x,y)点都置为-1,这样最后输入要查询的坐标的时候就可以直接打印了。这样的办法在需要查询多个点的时候比较快。坑就坑在,数据范围,x,y <= 100,000 , 如果按照这个思路走,一定会超出内存的。另,查询只有一次,因此用这个方法和常规的得到要查询的坐标再去计算,话费的时间差不多。所以么办法了,还是常规思路吧。

依次存储所有点的信息

获取要查询的点

依次遍历所有点,只要地毯覆盖了这个点,直接更新覆盖的地毯id

#include <stdio.h>

#define N 10000

int main()
{
    long carpet[N][4] = {{0}}, x, y;
    int on_carpet = -1, n;
    int i, j;
    scanf("%d", &n);
    for (i=0; i<n; i++)
    {
        scanf("%ld%ld%ld%ld", carpet[i], carpet[i]+1, carpet[i]+2, carpet[i]+3);
    }
    scanf("%ld%ld", &x, &y);
    for (i = 0; i<n; i++) {
        if (carpet[i][0] <= x && x <= carpet[i][0]+carpet[i][2] && carpet[i][1] <= y && y <= carpet[i][1]+carpet[i][3] )
        {
            on_carpet = i+1;
        }
    }
    printf("%d", on_carpet);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_23937195/article/details/79634442
今日推荐