• NBUT 1118 Marisa's Affair (排序统计,水)


    题意:

      每行给出一个人名和一个int值,人名可重复出现。要求对同一个人名统计int值,最大的先输出,若相同,则按照人名出现次数,若再相同,则按照人名字典序。

    思路:

      输入完全部进行排序,写个比较函数传进去sort即可。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 struct node
     5 {
     6     char nam[22];
     7     int lik;
     8     int tim;
     9 }a[5500];
    10 
    11 map<string, int> mapp2;//名字映射为int比较好处理
    12 
    13 int cmp(node ll,node rr)
    14 {
    15     if(ll.lik<rr.lik)
    16         return 0;
    17     else if(ll.lik>rr.lik)
    18         return 1;
    19 
    20     if(ll.tim<rr.tim)
    21         return 0;
    22     else if(ll.tim>rr.tim)
    23         return 1;
    24 
    25 
    26     if(strcmp(ll.nam, rr.nam)>0)
    27         return 0;
    28     else    return 1;
    29 }
    30 
    31 int main()
    32 {
    33     //freopen("input.txt", "r", stdin);
    34 
    35     //按照可能性排序,再按照时间排序,再按字典序排序。
    36 
    37     int n, like;
    38     char s[22];
    39     string temp;
    40     map<string,int>::iterator it;
    41 
    42     while(cin>>n)
    43     {
    44         memset(a,0,sizeof(a));
    45         mapp2.clear();
    46 
    47         int k=0;
    48         for(int i=0; i<n; i++)
    49         {
    50             scanf("%s%d",s,&like);
    51             temp=s;
    52             it=mapp2.find(temp);
    53 
    54             if(it==mapp2.end())      //新来的
    55             {
    56                 mapp2[temp]=k;
    57 
    58                 a[k].lik=like;
    59                 a[k].tim=1;
    60                 strcpy(a[k].nam, s);
    61                 k++;
    62             }
    63             else
    64             {
    65                 a[it->second].lik+=like;
    66                 a[it->second].tim++;
    67             }
    68         }
    69         sort(a,a+k,cmp);
    70         printf("%d
    ",k);
    71         for(int i=0; i<k; i++)
    72             printf("%s %d %d
    ", a[i].nam, a[i].lik, a[i].tim);
    73     }
    74     return 0;
    75 }
    AC代码
  • 相关阅读:
    php-Zip打包文件
    PHP命令行类库 climate
    vim 添加块注释
    冒泡排序|插入排序
    PHP-SeasLog安装和使用
    链表
    多线程上下文切换
    竞态与线程安全
    线程的生命周期
    线程创建的两种方法
  • 原文地址:https://www.cnblogs.com/xcw0754/p/4538772.html
Copyright © 2020-2023  润新知