今天这个题也是把我头搞大了
最后才发现是sort函数的问题,少了个否则的判断是真的难受!!!
我建议以后写sort第三给排序的参数函数还是尽量这么写,
bool cmp(px x,px y){ //升序
return x.b<y.b;
}
bool cmp(px x,px y){ //降序
return x.b>y.b;
}
这是之前出问题的代码,注意看sort
#include<bits/stdc++.h>
using namespace std;
struct Stu{
int a;
int b;
};
bool cmp(Stu c,Stu d){
if(c.b>d.b){
return false;
}
}
int main(){
int n;
scanf("%d",&n);
Stu b[200000];
for(int i=0;i<n;i++){
cin>>b[i].a>>b[i].b;
}
sort(b,b+n,cmp);
int sum=1;
int k=b[0].b;
int i=0;
while(i<n){
i++;
if(k<=b[i].a){
sum++;
k=b[i].b;
}
}cout<<sum;
return 0;
}
这是正确的
#include<bits/stdc++.h>
using namespace std;
struct Stu{
int a;
int b;
};
bool cmp(Stu c,Stu d){
if(c.b>d.b){
return false;
}else{
return true;}
}
int main(){
int n;
scanf("%d",&n);
Stu b[2000000];
for(int i=0;i<n;i++){
cin>>b[i].a>>b[i].b;
}
sort(b,b+n,cmp);
int sum=1;
int k=b[0].b;
int i=0;
while(i<n){
i++;
if(k<=b[i].a){
sum++;
k=b[i].b;
}
}cout<<sum;
return 0;
}