51Nod 1091 线段重叠 贪心 区间重叠
Posted #WoNderlAnd#
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51Nod 1091 线段重叠 贪心 区间重叠相关的知识,希望对你有一定的参考价值。
按左端点排序,然后维护右端点最大值,贪心的思想。。。明明线扫一遍O(n)就好……然额……还是想得有些复杂
#include<iostream> #include<algorithm> #include<vector> #include<string.h> #include<stack> using namespace std; typedef long long ll; const int MAX = 5e4 + 5; int n; struct line { int l, r; }a[MAX]; bool cmp(line a, line b) { if (a.l == b.l) return a.r > b.r; return a.l < b.l; } int main() { ios::sync_with_stdio(false); while (cin >> n) { for (int i = 0; i < n; i++) cin >> a[i].l >> a[i].r; sort(a, a + n, cmp); int maxx=0,e=a[0].r; for (int i = 1; i < n; i++) { maxx = max(maxx, min(e, a[i].r) - a[i].l); //当前和之前相比较小的右端点-当前左端点 e = max(e, a[i].r); //维护右端点最大值 } cout << maxx << endl; } return 0; }
以上是关于51Nod 1091 线段重叠 贪心 区间重叠的主要内容,如果未能解决你的问题,请参考以下文章