标签:node currEnd 212 int Node 结束 区间 程序设计 papamelon
地址 https://www.papamelon.com/problem/212
解答
贪心算法
选择符合条件中区间结束比较早的那个区间。
可以证明,同样的选择区间中,选择较早结束的区间至少不会得到比选择较晚结束的区间更差的结果。
基于以上规则,我们将区间按照结束时间排序。
每次选择起始时间比当前结束时间小的区间,该区间是可以选择的区间中结束时间最早的。即可
// 1123555.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <algorithm>
using namespace std;
/*
5
1 99
2 5
4 7
6 9
8 10
输出
3
*/
const int N = 100010;
struct Node {
int l; int r;
}node[N];
int n;
bool cmp(const struct Node& a, const struct Node& b) {
return a.r < b.r;
}
void solve() {
sort(node, node + n, cmp);
int currEnd = -9999999;
int ans = 0;
for (int i = 0; i < n; i++) {
if (currEnd < node[i].l) {
ans++; currEnd = node[i].r;
}
}
cout << ans << endl;
return ;
}
int main()
{
while (cin >> n) {
for (int i = 0; i < n; i++) {
int a, b;
cin >> a >> b;
if (a > b) { swap(a, b); }
node[i].l = a; node[i].r = b;
}
solve();
}
return 0;
}
标签:node,currEnd,212,int,Node,结束,区间,程序设计,papamelon 来源: https://www.cnblogs.com/itdef/p/15613925.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。