Sample Input
2
3
1 2
1 1
2 3
3
1 2
1 1
2 2
Sample Output
3
2
题意:T组样例,n组数据,每组两个数a,b,(1<=i<=n)代表在y=i,a<=x<=b之间有一条线段,在整点可以放入值,问每条线段最少有一个点的最大数量是多少。
思路:按照左端点排序,然后按照长度排序,每次找长度最小的点,这样就保证了最多每一条线段上最少有一个点的情况。要用到优先队列,点击查看优先队列,然后定义一个L,如果不相等,ans++,L=ans,在减一放入队列里面。
#include <cstdio>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX=1e5;
struct A
{
ll l,r;
bool operator < (const A & a) const
{
if(l==a.l)
return r>a.r;
return l>a.l;
}
}; //优先队列(按结构体中的l从小到大排序)
priority_queue <A> q;
int main()
{
ll T,i,j,n;
scanf("%lld",&