洛谷:P1003:铺地毯


洛谷:P1003:铺地毯

Table of Contents

题目

P1003:铺地毯

分析

这道题目不难。关键是两点:

  1. 怎么判断一个点在不在一块地毯(一个矩形之内);
  2. 如何保证找到的是“最上面的地毯”。

给定矩形的左上角(x, y)以及长宽g, x,判定一个点(假定它的坐标是(a, b))在一个矩形之内的公式就是:

a <= x && x <= a + g && b <= y && y <= b + k

要保证找到最上面的地毯,根据题意,先输入的是先铺好的地毯(也就是最下面的那块),最后输入的倒是最上面的地毯。所以遍历的时候逆序遍历即可。

答案

Solution

思考

这道题中,我用了稍微进阶一些的STL中的vectorpair。因此,在输入某块地毯左上角坐标以及长宽时,用到了pair的成员firstsecond。如果改用常规的struct当然也是完全可以的。

int a = carpets[i].first.first;
int b = carpets[i].first.second;
int g = carpets[i].second.first;
int k = carpets[i].second.second;

有兴趣的读者可以自行改写。

上一篇 下一篇