zoukankan      html  css  js  c++  java
  • COGS 615. 韩国明星

    【问题描述】


    在LazyCat同学的影响下,Roby同学开始听韩国的音乐,并且越来越喜欢H.o.T,尤其喜欢安七炫和Tony,可是,爱学习爱思考的Roby同学想,如果以后喜欢的韩星越来越多怎么办呢?Roby怎么知道Roby最喜欢谁呢(Roby都不知道谁知道呢。。。。)? 
    于是,Roby同学求助于你。 
    Roby首先会给你一张表,表上是所有他认识的韩星的名字,一开始他对所有韩星的好感度都为0。 
    然后Roby会告诉你一些他对某个韩星的好感度变化。 
    最后,请按照Roby对他们好感从大到小的顺序输出他们。

    [输入] 
    第一行一个个数N,表示Roby知道的韩星数目。 
    后面有N行,表示每一个Roby认识的韩星的名字。 
    再下面一行一个数K。 
    接下来2*K行,每两行为一组,上面一行为韩星的名字Name,下面一行为好感度变化量Change。

    [输出] 
    N*2行,依据韩星们的受Roby好感度从大到小的顺序输出,每两行为一组,第一行输出韩星的名字,第二行输出受Roby的好感度。

    [样例输入] 

    HhIsaGay 
    ZcLoveStudy 
    OneBlueOne 

    ZcLoveStudy 
    100 
    OneBlueOne 
    8888 
    ZcLoveStudy 
    20 
    OneBlueOne 
    8888 
    HhIsaGay 
    -1000


    [样例输出] 
    OneBlueOne 
    17776 
    ZcLoveStudy 
    120 
    HhIsaGay 
    -1000

    [数据范围] 
    对于20%的数据,保证N<=100,K<=100. 
    对于40%的数据,保证N<=10000,K<=30000. 
    对于100%的数据,保证N<=100000 -8888<=Change<=8888 K<=100000.

    [时限] 
    2S

    trie树

    成功拉低通过率

    mmp 创建再忘写return就剁手 !

    mmp 再忘了把debug的东西删去就剁手!

    屠龙宝刀点击就送

    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    struct node
    {
        int pos;
        node * next[30];
    }*root;
    struct star
    {
        char name[100];
        int hg;
        bool operator<(star a)const
        {
            return hg>a.hg;
        }
    }kstar[100005];
    node * create()
    {
        node * rt=new node;
        rt->pos=0;
        memset(rt->next,0,sizeof(rt->next));
        return rt;
    }
    int f(char a)
    {
        if(a<='Z') return a-'A';
        else return a-'a'+26;
    }
    void ins(int k,char *a)
    {
        node * p=root;
        char *q=a;
        while(*q)
        {
            int id=f(*q);
            if(p->next[id]==NULL) p->next[id]=create();
            p=p->next[id];
            ++q;
        }
        p->pos=k;
    }
    int search(char* b)
    {
        node *p=root;
        char *q=b;
        while(*q)
        {
            int id=f(*q);
            p=p->next[id];
            ++q;
        }
        return p->pos;
    }
    int n,m;
    int main()
    {
        freopen("star.in","r",stdin);
        freopen("star.out","w",stdout);
        root=create();
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%s",kstar[i].name);
            ins(i,kstar[i].name);
        }
        scanf("%d",&m);
        char Name[30];
        for(int plus;m--;)
        {
            scanf("%s%d",Name,&plus);
            kstar[search(Name)].hg+=plus;
        }
        sort(kstar+1,kstar+1+n);
        for(int i=1;i<=n;i++)
        printf("%s
    %d
    ",kstar[i].name,kstar[i].hg);
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    Java实现 LeetCode 394 字符串解码
    Java实现 LeetCode 394 字符串解码
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 390 消除游戏
    Java实现 LeetCode 390 消除游戏
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7349186.html
Copyright © 2011-2022 走看看