问题标题: 酷町堂:2624 40分 求找错

0
0
已解决
曹博扬
曹博扬
初级天翼
初级天翼
#include<iostream>
#include<string>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,c,st1=-1,st2=-1;
struct f{
    int x,y;
}a[10010];
bool cmp(f a,f b){
    if(a.y!=b.y)
        return a.y<b.y;
    return a.x<b.x;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i].x>>a[i].y;
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        if(a[i].x<st1){
            if(a[i].x>=st2){
                st2=a[i].y;
                c++;
            }
        }else{
            st1=a[i].y;
            c++;
        }
    }
    cout<<c+1;
    return 0;
}

 


0
已采纳
张恩泽
张恩泽
高级天翼
高级天翼

循环里的if(a[i].x < st1)改成if(a[i].x >= xt1),因为他是可以无缝衔接的,正如汪宇航所说

然后如果满足说的if可以直接累加

第一个if里面的if则是另外一种条件,满足也可以直接累加

最后一个else不要了

最最重要的一点是要判断如果st1小于st2,就交换st1和st2,用swap

最后直接输出c即可

0
0
汪宇航
汪宇航
新手启示者
新手启示者

试试吧c赋初值1,输出c

0
0
我要回答