7月20日闲话

· · 个人记录

学习了一些底层。

起因是这道题,使用了 set 中的一些性质。

set::find

参数:该函数接受一个强制性参数element ,该元素指定要在集合容器中搜索的元素。

返回值:该函数返回一个迭代器,该迭代器指向在集合容器中搜索的元素。如果找不到该元素,则迭代器将指向集合中最后一个元素之后的位置

我之前没想过这玩意能求区间的包含关系。

但这道题里面,只需要重定义一下 < ,find 一下就能找到包含的区间。

struct node{
    int l,r;
    bool operator <(const node &x)const{
        return r<x.l;
    }
};

原因是这样的:

set 中判断元素是否相等: 当 A<B和 B<A 都为时,它们相等

那么这样定义之后 find 出来的都是与他有交集的区间,又因为包含关系的只可能有一个,判断一下就好了。

妙啊!!!

冲了一天屎山 ds,心态崩了。