A101793题解
2026-02-01 12:01:59
发布于:上海
3阅读
0回复
0点赞
#include <cstdlib>
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
struct node{
long long l,r;
}b[200050];
long long n,k;
bool cmp(node a,node b){
if (a.r!=b.r)return ①;
return ②;
}
int main(){
cin>>n>>k;
for (int i=1;i<=n;i++){
cin>>b[i].l>>b[i].r;
b[i].l=max(③,b[i].l-k+1);
}
sort(④,cmp);
long long lst=-1,ans=0;
for (int i=1;i<=n;i++){
long long l=b[i].l;
long long r=b[i].r;
if (⑤){
lst=r;
ans++;
}
}
cout<<ans;
return 0;
}
①
a.r<b.r
a.r>b.r
a.l<b.l
a.l>b.l
②
a.r<b.r
a.r>b.r
a.l<b.l
a.l>b.l
③
1
1ll
0
0ll
④
b+1,b+1+n
b,b+n
b+1,b+n
b,b+1+n
⑤
l<lst
l==lst
l!=lst
l>lst
#include <cstdlib>
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
struct node{
long long l,r;
}b[200050];
long long n,k;
bool cmp(node a,node b){
if (a.r!=b.r)return a.r<b.r;
return a.l<b.l;
}
int main(){
cin>>n>>k;
for (int i=1;i<=n;i++){
cin>>b[i].l>>b[i].r;
b[i].l=max(1ll,b[i].l-k+1);
}
sort(b+1,b+1+n,cmp);
long long lst=-1,ans=0;
for (int i=1;i<=n;i++){
long long l=b[i].l;
long long r=b[i].r;
if (l>lst){
lst=r;
ans++;
}
}
cout<<ans;
return 0;
}

这里空空如也



有帮助,赞一个