zoukankan      html  css  js  c++  java
  • 1095 解码PAT准考证

    PAT 准考证号由 4 部分组成:

    • 第 1 位是级别,即 T 代表顶级;A 代表甲级;B 代表乙级;
    • 第 2~4 位是考场编号,范围从 101 到 999;
    • 第 5~10 位是考试日期,格式为年、月、日顺次各占 2 位;
    • 最后 11~13 位是考生编号,范围从 000 到 999。

    现给定一系列考生的准考证号和他们的成绩,请你按照要求输出各种统计信息。

    输入格式:

    输入首先在一行中给出两个正整数 N(104​​)和 M(100),分别为考生人数和统计要求的个数。

    接下来 N 行,每行给出一个考生的准考证号和其分数(在区间 [0,100] 内的整数),其间以空格分隔。

    考生信息之后,再给出 M 行,每行给出一个统计要求,格式为:类型 指令,其中

    • 类型 为 1 表示要求按分数非升序输出某个指定级别的考生的成绩,对应的 指令 则给出代表指定级别的字母;
    • 类型 为 2 表示要求将某指定考场的考生人数和总分统计输出,对应的 指令 则给出指定考场的编号;
    • 类型 为 3 表示要求将某指定日期的考生人数分考场统计输出,对应的 指令 则给出指定日期,格式与准考证上日期相同。

    输出格式:

    对每项统计要求,首先在一行中输出 Case #: 要求,其中 # 是该项要求的编号,从 1 开始;要求 即复制输入给出的要求。随后输出相应的统计结果:

    • 类型 为 1 的指令,输出格式与输入的考生信息格式相同,即 准考证号 成绩。对于分数并列的考生,按其准考证号的字典序递增输出(题目保证无重复准考证号);
    • 类型 为 2 的指令,按 人数 总分 的格式输出;
    • 类型 为 3 的指令,输出按人数非递增顺序,格式为 考场编号 总人数。若人数并列则按考场编号递增顺序输出。

    如果查询结果为空,则输出 NA

    输入样例:

    8 4
    B123180908127 99
    B102180908003 86
    A112180318002 98
    T107150310127 62
    A107180908108 100
    T123180908010 78
    B112160918035 88
    A107180908021 98
    1 A
    2 107
    3 180908
    2 999
    

    输出样例:

    Case 1: 1 A
    A107180908108 100
    A107180908021 98
    A112180318002 98
    Case 2: 2 107
    3 260
    Case 3: 3 180908
    107 2
    123 2
    102 1
    Case 4: 2 999
    NA
    
     
    思路:这里有个将map<key,value>导入创建的结构体数组vector然后按value值排序的问题,然后map要用unorder_map,以及将所有cout改为printf输出,string类型加个 .c_str 就可以转换然后用%s输出,不然会超时,(这题TLE多了容易自闭)......
     
     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<unordered_map>
     5 #include<vector>
     6 using namespace std;
     7 typedef struct 
     8 {
     9     string num;
    10     int grade;
    11 } Student;
    12 bool cmp1(const Student &a,const Student &b)
    13 {
    14     return a.grade != b.grade ? a.grade > b.grade : a.num < b.num;
    15 }
    16 int main()
    17 {
    18     int N,M;
    19     scanf("%d%d",&N,&M);
    20     Student sum[N];
    21     for(int i=0;i<N;i++)
    22     cin>>sum[i].num>>sum[i].grade;
    23     int zhiling;
    24     for(int i=0;i<M;i++)
    25     {
    26         scanf("%d",&zhiling);
    27         printf("Case %d: %d ",i+1,zhiling);
    28         if(zhiling==1)
    29         {
    30             char top;
    31             int flag=1;
    32             scanf(" %c",&top);
    33             printf("%c
    ",top);
    34             sort(sum,sum+N,cmp1);
    35             for(int j=0;j<N;j++)
    36             {
    37                 if(sum[j].num[0]==top)
    38                 {
    39                     flag=0;
    40                     printf("%s %d
    ",sum[j].num.c_str(),sum[j].grade);
    41                 }
    42             }
    43             if(flag)
    44                 printf("NA
    ");
    45         }
    46         
    47         else if(zhiling==2)
    48         {
    49             string kaochang;
    50             cin>>kaochang;
    51             cout<<kaochang<<endl;
    52             int cnt=0,sumgrade=0;
    53             for(int j=0;j<N;j++)
    54             {
    55                 if(sum[j].num.substr(1,3)==kaochang)
    56                 {
    57                     cnt++;
    58                     sumgrade+=sum[j].grade;
    59                 }
    60             }
    61             if(cnt)
    62                 printf("%d %d
    ",cnt,sumgrade);
    63             else
    64                 printf("NA
    ");
    65         }
    66     
    67         else if(zhiling==3)
    68         {
    69             string date;
    70             cin>>date;
    71             cout<<date<<endl;
    72             unordered_map<string,int>cnt;
    73             for(int j=0;j<N;j++)
    74             {
    75                 if(sum[j].num.substr(4,6)==date)
    76                 {
    77                     cnt[sum[j].num.substr(1,3)]++;
    78                 }
    79             }
    80             vector<Student>ans;
    81             for(auto iter=cnt.begin();iter!=cnt.end();iter++)
    82             {
    83                 ans.push_back({iter->first,iter->second});
    84             }
    85             sort(ans.begin(),ans.end(),cmp1);
    86             for(int j=0;j<ans.size();j++)
    87             {
    88                 printf("%s %d
    ",ans[j].num.c_str(),ans[j].grade);
    89             }
    90             if(ans.size()==0)
    91                 printf("NA
    ");
    92         }
    93     }
    94     return 0;
    95 }
    大佬见笑,,
  • 相关阅读:
    Silverlight 2 应用程序部署到任意HTML页面
    推荐一个工具包自定义HTTP 404错误
    WPF/Silverlight的UI和逻辑完全分离
    ObservableCollection 类
    Silverlight + ModelViewViewModel (MVVM)
    IIS7 request routing 和load balancing module发布
    DeepEarth:使用Silverlight的地图控件
    在Vista安装SQL 2008 Express遭遇属性不匹配错误解决办法
    RIA 应用程序模式
    WinForm界面开发之酒店管理系统报表篇
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/10490408.html
Copyright © 2011-2022 走看看