• 57级返校测试-T3-成绩单


    题目:

    题目背景

    今天大家返校参加考试,本来信心满满以为能拿400分……自己再提交一下试试吧!

    题目描述

    又考试了,这次考试的人数特别多,每个人的学号很特别,是用字符串表示的(不超过 30 位),每次考试结束后,成绩统计是一件很重要的事情。 老师们都很关心学生的成绩,于是他们把学生的成绩按学号排列(字典顺序,学号全为 小写字母,从小到大排列)(不排成绩),并统计各个分数,及分数段的人数,以及满分人员 (满分要奖励 XXX 奖学金的)。

    输入格式

    第一行:一个数 n (n<=130000 人)。 以下 n 行:每行两个信息,分别为学号,分数(1~150 分)

    输出格式

    第一行:各个分数段(空格隔开)(例如 1~10 11~20……(见例样,不包括 150 分 的人数)。 第二行:各个分数段的人数(空格隔开,没有则输出 0)。 接下来的 n 行,分别为 n 个学生的学号,成绩,(空格隔开)。 再接下来的一行为满分的人的人数 x(如果没有则为 0)(保证 x 不超过 10000)。 接下来的 x 行为满分人的学号(如果 x 为 0 则为一行‘No’)(按字典序从小到大排序)。 注意:一行若有多个数据,每一个数据之间用空格隔开,最后一个数据后不允许有空格。 分数段中没有 0 分和 150 分的。

    ……

    说明

    恩,这个是我们一道测试题。本来信心满满感觉挺简单,能AC的,结果直接爆零……

    结果最后就是一个字符串比较的问题……

    研究一阵子才发现可以直接用大于小于号……

    代码

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<string.h>
    #include<cstring>
    
    using namespace std;
    
    struct stu
    {
        string xh;
        int fs;
    }student[150000];
    int jiance=1;
    bool cmp(stu a,stu b)
    {
        return a.xh<b.xh;
        /*
        for(int i=1;i<=min(a.xh.length(),b.xh.length());i++)
        {
            if(a.xh[i]>b.xh[i])
            {
                return 1;
            }
            if(a.xh[i]<b.xh[i])
            {
                return 0;
            }
        }
        if(strcmp(a.xh.c_str(),b.xh.c_str())>0)
        {
            return 0;
        }
        else
        {
            return 1;
        }
        */
        //以上这一部分就是我那时候写的字符串比较……还试了好几种……反正总之就是莫名不对……
        //后来才学到原来字符串也可以直接用大于小于号……
        //这道题主要就是学习到这个吧…… 
    }
    
    int fsd[20];
    int flag11=0;
    
    int main()
    {
        int n;
        int x=0;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>student[i].xh>>student[i].fs;
            if(student[i].fs==150)
            {
                x++;
            }
            fsd[student[i].fs/10+1]++;
        }
        cout<<"1~9 10~19 20~29 30~39 40~49 50~59 60~69 70~79 80~89 90~99 100~109 110~119 120~129 130~139 140~149";
        cout<<endl;
        for(int i=1;i<16;i++)
        {
            cout<<fsd[i]<<" ";
        }
        cout<<endl;
        
        sort(student,student+n+1,cmp);
        for(int j=1;j<=n;j++)
        {
            cout<<student[j].xh<<" "<<student[j].fs<<endl;
        }
        cout<<x<<endl;
        for(int fbk=1;fbk<=n;fbk++)
        {
            if(student[fbk].fs==150)
            {
                cout<<student[fbk].xh<<endl;
                flag11=1;
            }
        }
        if(!flag11)
        {
            cout<<"No";
        }
        return 0;
    }

    恩……

  • 相关阅读:
    leetcode Move Zeroes
    leetcode Same Tree
    leetcode range sum query
    leetcode Invert Binary Tree
    leetcode【sql】 Delete Duplicate Emails
    mac编译PHP报错 configure: error: Please reinstall the libcurl distribution
    Linux添加系统环境变量的两种方法
    Mysql获取去重后的总数
    MySQL查询order by相减select相减的Sql语句
    修改maven本地仓库路径
  • 原文地址:https://www.cnblogs.com/arknight/p/12905946.html
Copyright © 2020-2023  润新知