2 条题解

  • 1
    @ 2025-9-27 21:39:13

    首先可以看到 @ 的题解,是否感到不理解?这里有更简单的方案

    这道题是一种排序,排序过程中需要让两个数据“绑”在一块,可能需要 int nums[n][2] (同时交换),或者struct结构体,或者pair之类的

    在你思考怎么处理两个日期之间的关系的时候不难发现,咱们可以让月份和号这两个数据合并在一起,如何呢?

    点击展开提示

    时间戳=月份*100+号

    然后直接排序时间戳即可,再拆开即可(通过/100和%100)

    cpp

    const int N=1e6+10;
    int t[N];
    
    void eachT() {
        //读取
        int n,x,y; cin>>n;
        for(int i=1;i<=n;++i){
            cin>>x>>y;
            t[i]=x*100+y;
        }
    
        //提示:编辑区 ctrl+/ 可以取消注释
        
        //cpp排序
        // sort(t+1,t+1+n);
        
        //冒泡排序
        // for(int i=1;i<=n;++i)
        //     for(int j=1;j<=n-i;++j)
        //         if(t[j]>t[j+1])
        //             swap(t[j],t[j+1]);
        
    
        //输出
        for(int i=1;i<=n;++i){
            cout<<t[i]/100<<" "<<t[i]%100<<endl;
        }
    }
    

    信息

    ID
    618
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    24
    已通过
    6
    上传者