步驟
operator< ?的作用在 C++ 中, operator< ?是一個運算符重載函數,它定義了如何比較兩個對象的大小。在 ?std::sort ?函數中,它會用到這個比較函數來決定排序的順序。
在 sort ?中,默認會使用 ?< ?運算符來比較兩個對象的大小。如果對象是基本類型(如 ?int 、 float ?等), < ?運算符的含義是明確的。但如果對象是一個自定義類型(如這里的 ?Range ?結構體),我們需要明確地告訴 sort ?如何比較兩個 ?Range ?對象的大小。
通過重載 ?< ?運算符,我們定義了 ?Range ?對象之間的比較規則。在這個問題中,我們希望按照區間的右端點 ?r ?來排序,因此我們定義了比較規則為:如果一個區間的右端點 ?r ?小于另一個區間的右端點 ?r ,則認為這個區間“小于”另一個區間。
AC代碼:
#include <iostream>
#include <algorithm>using namespace std;const int N = 100010;int n;
struct Range//定義一個結構體,一個結構體代表一個區間
{int l, r;bool operator< (const Range &W)const//由于要排序,所以重載一下{return r < W.r;//按照右端排序}
}range[N];int main()
{cin>>n;for (int i = 0; i < n; i ++ ) cin>>range[i].l>>range[i].r;sort(range, range + n);
//從左往右掃描int res = 0, ed = -2e9;//res代表當前選擇的點數,ed代表上一個點的右下標for (int i = 0; i < n; i ++ )if (range[i].l > ed){res ++ ;ed = range[i].r;}cout<<res;return 0;
}