zoukankan      html  css  js  c++  java
  • 排行榜

    排行榜

    题目描述

    小迈克尔住在一个小镇上,他喜欢看每周日下午发布的音乐电视评比。它每周都根据选票介绍相同的歌曲,列出这些歌曲的流行排行榜。
    有一个星期日迈克尔和他的朋友在一起玩得太久了以致于未能看到新的流行榜。他非常失望,但是不久他就发现下周至少可以部分地建立出流行榜。除了每首歌曲的位置,排行榜还根据这些歌曲上周的排行列出了它们排行变动的信息,更精确地说,从这周起,不管那首歌是继续排在原位,还是排名上升或排名下降,都会给出一点说明。
    编写程序,根据给定的流行榜帮助迈克尔推断出上周可能的排行榜。

    输入

    第一行是一个整数N,1≤N≤100,表示排行榜上歌曲的总数。
    接下来的N块列出了排行信息。每块有两行组成,第i块第一行是第i首歌曲的名称,歌名包括最多不超过100个英文大写字母,第二行包含下列三个单词中的一个:UP(歌曲在排行榜上的位置上升),DOWN(歌曲在排行榜上的位置下滑)或SAME(排行不变),表示与上周排行榜相比,排行榜所发生的变动。

    输出

    用N行输出一个上周可能的排行榜。
    每一行包含一首歌名,即第i行包含排行榜上第i首歌的歌名。
    注意:解不必是唯一的,但对于每一个测试数据都至少有一个解。

    样例输入

    5
    HIGHHOPES
    UP
    LOWFEELINGS
    UP
    UPANDDOWN
    DOWN
    IAMSTILLSTANDING
    DOWN
    FOOLINGAROUND
    DOWN
    

    样例输出

    UPANDDOWN
    IAMSTILLSTANDING
    FOOLINGAROUND
    HIGHHOPES
    LOWFEELINGS
    分析:先把排名不变的占了,然后从前往后优先占排名掉的,再占排名升的;
    代码:
    #include <bits/stdc++.h>
    const int maxn=1e5+10;
    using namespace std;
    int n,m,k,t,p,q;
    string a[maxn],b[maxn],ans[maxn];
    string now,qq;
    int main()
    {
        int i,j;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            cin>>now>>qq;
            if(qq=="UP")b[q++]=now;
            else if(qq=="SAME")ans[i]=now;
            else   a[p++]=now;
        }
        int now1=0,now2=0;
        for(i=1;i<=n;i++)
        {
            if(ans[i]=="")
            {
                if(now1<p)ans[i]=a[now1++];
                else ans[i]=b[now2++];
            }
        }
        for(i=1;i<=n;i++)cout<<ans[i]<<endl;
        //system("pause");
        return 0;
    }
  • 相关阅读:
    nodejs修改jade为html的方法(ejs is not defined解决)
    http协议简单解析
    有序序列ol li 详解(ol li 标号未显示?)
    html5新标签及废弃元素
    HTML <!DOCTYPE> 声明详解
    ACM组队安排---递推
    使用CORDIC算法求解角度正余弦及Verilog实现
    Xilinx FPGA的专用时钟引脚及时钟资源相关
    【转】上拉下拉电阻、I/O输出(开漏、推挽等)
    Testbench文件编写纪要(Verilog)
  • 原文地址:https://www.cnblogs.com/dyzll/p/5769192.html
Copyright © 2011-2022 走看看