1 条题解

  • 1
    @ 2026-7-8 23:16:41

    题意

    给定n个姓名和分数,先按分数从大到小排序,如有相同分数,就按姓名的字典序从小到大排序。其实题意是用来凑字数的

    过程

    这道题丝毫不愧对它前面的【基础】二字,用结构体排序就行了。

    AC代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
        string name;
        int s;
    }a[25];//n<=20,开25够了
    bool cmp(node a,node b){
        if(a.s!=b.s) return a.s>b.s;
          //注意这里一定要判一下a.s!=b.s
        else return a.name<b.name;
    }
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i].name>>a[i].s;
        sort(a+1,a+n+1,cmp);
        for(int i=1;i<=n;i++){
          cout<<a[i].name<<" "<<a[i].s<<endl;
      }
      //记得有空格和换行
        return 0;
    }
    
    
    • 1

    信息

    ID
    28
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    156
    已通过
    50
    上传者