zoukankan      html  css  js  c++  java
  • csu 1312 榜单(模拟题)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1312

    1312: 榜单

    Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 222  Solved: 84 [Submit][Status][Web Board]

    Description

    ZZY很喜欢流行音乐,每周都要跟踪世界各地各种榜单,例如OriconBillboard,现在给出每周各个单曲的销量请给出每周的TOP5以及TOP5中各个单曲的浮动情况。

     

     

     

    量的排名是按照本周销量排名,而不是总销量。

     

     

     

    浮动情况则是较上周的排名变动,也就是说即使某单曲本周销量比上周的差,但排名比上周高,也是*UP*。反之若排名比上周低则为*DOWN*。若与上周的名次一样,则是*STAY*

     

    若是本周发行的新单(前面未有统计过销量),则浮动的情况为*NEW*。所以第一周所有单的情况都为*NEW*

    Input

    多组数据,每周第一行输入为一个正整数N(5<=N<=10)表示当周统计了销量的专辑数,当N=0时结束输入。(不超过10)

     

     

     

    每周的单曲名字都是不超过30位的字符串(不会有空格,连续的串),名字后面跟的就是销量,单周最大销量不超过200万张。并且在不同周,相同的专辑名字一定是一模一样(相同的字符串)

     

     

     

    每周不会出现两个单曲销量相同。

     

    本周没有统计前面某个已存在单曲的销量则说明本周其销量小得可以忽略,为0

    Output

    第一组数据为第一周,第二组数据为第二周,以此类推。

     

     

     

    每周数据第一行为WEEK k其中k为周数,WEEK k的左右两边各16'-'

     

     

     

    紧接着五行,依次为top1~top5

     

     

     

    先输出当前是第几名"rank.",再接着当前名次单曲较上周的浮动情况。

     

     

     

    *DOWN**STAY*后面空两格格输出单曲名,*NEW*后面空三格输出单曲名,*UP*后面空四格输出单曲名。

     

     

     

    每行输出完单曲名后不要输出多余空格。

     

    具体输出格式细节参考样例。

    Sample Input

    6
    AKB48-Give_me_Five          1200000
    Adele-Set_Fire_To_The_Rain   900000
    Katy_Perry-Part_Of_Me        400000
    KANA-Sakura,I_love_you       360000
    Nicki_Minaj-Starships        300000
    AAA-SAILING                  350000
    5
    KAT_TUN-CHAIN                550000
    Adele-Set_Fire_To_The_Rain   850000
    AKB48-Give_me_Five           500000
    KANA-Sakura,I_love_you       300000
    Nicki_Minaj-Starships        290000
    0
    

    Sample Output

    ----------------WEEK 1----------------
    1.*NEW*   AKB48-Give_me_Five
    2.*NEW*   Adele-Set_Fire_To_The_Rain
    3.*NEW*   Katy_Perry-Part_Of_Me
    4.*NEW*   KANA-Sakura,I_love_you
    5.*NEW*   AAA-SAILING
    ----------------WEEK 2----------------
    1.*UP*    Adele-Set_Fire_To_The_Rain
    2.*NEW*   KAT_TUN-CHAIN
    3.*DOWN*  AKB48-Give_me_Five
    4.*STAY*  KANA-Sakura,I_love_you
    5.*UP*    Nicki_Minaj-Starships
    

    【题解】:
    模拟题
    【code】:
     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <algorithm>
     5 #include <vector>
     6 
     7 using namespace std;
     8 
     9 struct Nod
    10 {
    11     char name[50];
    12     int id;
    13     int sum;
    14 }node[30];
    15 
    16 vector<Nod> vct;
    17 int tn;
    18 
    19 bool cmp(Nod a,Nod b)
    20 {
    21     return a.sum>b.sum;
    22 }
    23 
    24 int isExist(int j)
    25 {
    26     int i,cnt=0;
    27     for(i=vct.size()-1;i>=0;i--)
    28     {
    29         cnt++;
    30         if(strcmp(node[j].name,vct[i].name)==0)
    31         {
    32             if(cnt<=tn)
    33             {
    34                 node[j].id = vct[i].id;
    35             }
    36             else node[j].id = 100;
    37             return 1;
    38         }
    39     }
    40     return 0;
    41 }
    42 
    43 int main()
    44 {
    45     int n,week=1;
    46     tn=-1;
    47     while(~scanf("%d",&n)&&n)
    48     {
    49         int i;
    50         for(i=0;i<n;i++)
    51         {
    52             scanf("%s%d",node[i].name,&node[i].sum);
    53         }
    54         sort(node,node+n,cmp);
    55         printf("----------------WEEK %d----------------
    ",week++);
    56         for(i=0;i<5;i++)
    57         {
    58             printf("%d.",i+1);
    59             if(!isExist(i))  printf("*NEW*   ");
    60             else if(node[i].id>i)    printf("*UP*    ");
    61             else if(node[i].id<i)   printf("*DOWN*  ");
    62             else    printf("*STAY*  ");
    63             printf("%s
    ",node[i].name);
    64         }
    65         for(i=0;i<n;i++)
    66         {
    67             node[i].id = i;
    68             vct.push_back(node[i]);
    69         }
    70         tn=n;
    71     }
    72     return 0;
    73 }
  • 相关阅读:
    秒杀项目之——通过令牌发放机制,控制秒杀大闸以及队列泄洪
    Guava的使用
    秒杀项目之细节随笔记录————
    redis搭建集群
    redis内存满了怎么办?
    多个电脑上免密登陆命令、scp远程拷贝、修改文件的用户和组
    克隆完虚拟机后修改网卡,修改静态IP
    redis基本操作和 过期时间设置以及持久化方案
    linux操作系统安装运行Redis
    云服务器以及linux操作系统打开防火墙,在墙上开一个小口
  • 原文地址:https://www.cnblogs.com/crazyapple/p/3293505.html
Copyright © 2011-2022 走看看