• 动物统计加强版 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);
    }
  • 相关阅读:
    The Python Standard Library
    Python 中的round函数
    Python文件类型
    Python中import的用法
    Python Symbols 各种符号
    python 一行写多个语句
    免费SSL证书(https网站)申请,便宜SSL https证书申请
    元宇宙游戏Axie龙头axs分析
    OLE DB provider "SQLNCLI10" for linked server "x.x.x.x" returned message "No transaction is active.".
    The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "xxx.xxx.xxx.xxx" was unable to begin a distributed transaction.
  • 原文地址:https://www.cnblogs.com/joeylee97/p/6895903.html
Copyright © 2020-2023  润新知