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;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    指针
    day07
    day06
    oracle instr
    动态解析dll及使用类
    客户端调用接口
    Java中调用WebService
    Vs2015智能提示英文
    oracle中varchar(32)转nvarchar(32)
    C#创建XML节点
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7349186.html
Copyright © 2011-2022 走看看