阜阳建设工程质量监督网站百度企业网盘
题意:给定n和m,给定n个区间li,ri,求出满足区间lr不完全包含区间liri的个数
分析:用优先队列对区间r进行排序,i表示左区间,每次找到右区间加入即可。
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define pii pair<int,int>
#define all(x) x.begin(),x.end()
const int N = 1e6+100;
const ll INF = 1e18;
int s1[N],s2[N];
void solve() { int n,m; cin>>n>>m;priority_queue<pii,vector<pii>,greater<pii>> q;//大根堆 for(int i=1;i<=n;i++) {int x,y; cin>>x>>y;q.push({y,x});}int ans=0;q.push({m+1,m+1});for(int i=1;i<=m;i++){while(!q.empty()) {pii k=q.top();// [r,l]=q.top();int r=k.first,l=k.second;if(l<i) {q.pop();continue;}if(r>i)ans+=r-i;break;}}cout<<ans<<endl;
} signed main() { std::ios::sync_with_stdio(false);std::cin.tie(0);int T=1; //cin>>T;while(T--) solve(); return 0;
}