• 动物统计加强版 Trie 树


    动物统计加强版

    时间限制:3000 ms  |  内存限制:150000 KB
    难度:4
     
    描述
    在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单。科学家想判断这片森林中哪种动物的数量最多,但是由于数据太过庞大,科学家终于忍受不了,想请聪明如你的ACMer来帮忙。
     
    输入
    第一行输入动物名字的数量N(1<= N <= 4000000),接下来的N行输入N个字符串表示动物的名字(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数据)。 
    输出
    输出这些动物中最多的动物的名字与数量,并用空格隔开(数据保证最多的动物不会出现两种以上)。 
    样例输入
    10
    boar
    pig
    sheep
    gazelle
    sheep
    sheep
    alpaca
    alpaca
    marmot
    mole
    样例输出
    sheep 3

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<sstream>
    #include<algorithm>
    #include<queue>
    #include<deque>
    #include<iomanip>
    #include<vector>
    #include<cmath>
    #include<map>
    #include<stack>
    #include<set>
    #include<fstream>
    #include<memory>
    #include<list>
    #include<string>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    #define MAXN 4000004
    #define L 31
    #define INF 1000000009
    #define eps 0.00000001
    /*
    Trie 树
    */
    typedef struct node
    {
        int cnt;
        struct node* next[26];
    }*Tree;
    char tmp[11];
    int alloc = 0, ans = 0, n;
    Tree Newnode()
    {
        Tree T = (Tree)malloc(sizeof(node));
        T->cnt = 0;
        for (int i = 0; i < 26; i++)
        {
            T->next[i] = NULL;
        }
        return T;
    }
    void Insert(Tree T, char s[])
    {
        int p = 0;
        while (s[p] != '')
        {
            int k = s[p] - 'a';
            if (!T->next[k])
                T->next[k] = Newnode();
            T = T->next[k];
            p++;
        }
        T->cnt++;
        if (T->cnt > ans)
        {
            memcpy(tmp, s, sizeof(s));
            ans = T->cnt;
        }
    }
    int main()
    {
        scanf("%d", &n);
        char s[11];
        Tree T = Newnode();
        for (int i = 0; i < n; i++)
        {
            scanf("%s", s);
            Insert(T, s);
        }
        printf("%s %d
    ",tmp, ans);
    }
  • 相关阅读:
    Jmeter分布测试
    SQL命令
    Linux执行命令时遇到的些问题
    Linux常用命令总结
    Jenkins与SVN持续集成
    在linux上创建slave节点
    内网域名配置方法
    Java中重写与重载的区别
    MongoDB基本使用
    MongoDB安装
  • 原文地址:https://www.cnblogs.com/joeylee97/p/6895903.html
Copyright © 2020-2023  润新知