1. 选择不相交区间
数轴上有n个开区间 ( a i , b i ) (a_i, b_i) (ai,bi)。选择尽量多个区间,使得这些区间没有公共点。
这是最简单的区间问题,很多区间问题都需要先排序,要么对 a i a_i ai排序,要么对 b i b_i bi排序。这道题直接将区间按照 b i b_i bi排序,第一个区间一定要选择,然后选择下一个符合条件的区间(不与第一个区间重叠),以此类推。
数据(5,7), (1,2), (4,6), (4,5), (0,3), (3,7), (8,10), (9,15), (16,17)。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<pair<int,int>> data {
{
5,7}, {
1,2}, {
4,6}, {
4,5}, {
0,3}, {
3,7}, {
8,10}, {
9,15}, {
16,17}};
bool cmp(pair<int, int> a, pair<int, int> b)
{
return a.second < b.second;
}
int main()
{
vector<pair<int,int>> ans;
sort(data.begin(), data.end