zoukankan      html  css  js  c++  java
  • wikioi 1306 机智Trie树

           看广播操无聊得非常~你有认为吗?在看广播操一波又一波的人潮涌过再退去。认为非常没意思……于是,偶们的大神犇JHT发明了一个及其好玩的游戏~

           把每一班级的队形看成一个字母(仅可能为大写字母),然后按他们的出场顺序无聊地排成一串,成为了一个著名的字符串!

    JHT神犇想看看一个年级中,一共同拥有多少种不同的出场组合(LCZ:说白了就是求字符串内的非空子串的数量!)。

           1行:一个字符串s

           1行:一个数字(s字符串的不同非空子串数)

    AAABBBCCC

    36

    时间限制 Time Limitation

    前8点每点1s

    后2点每点1.5s

    字符串长度 Hint

           10%的数据:1≤字符串s的长度≤100

           80%的数据:1≤字符串s的长度≤1200

           100%的数据:1≤字符串s的长度≤1500


    这题刚開始暴力取的子串,然后增加Trie树,然后T了,在取子串的时候T的,然后就没有然后了。

    下载了别人的代码才发现取子串的机智,详见代码。

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include<iostream>
    #include<bitset>
    #define mem(a,b) memset(a,b,sizeof(a))
    using namespace std;
    char s[1505];
    int sum,i,j,len,u,ch[1200000][26];
    int main()
    {
        scanf("%s",s);
        len=strlen(s);
        for(i=0;i<len;i++)
        {
            u=0;
            for(j=i;j<len;j++)
            {
                int c=s[j]-'A';
                if(!ch[u][c]) ch[u][c]=++sum;
                u=ch[u][c];
            }
        }
        cout<<sum<<endl;
        return 0;
    }
    


  • 相关阅读:
    paip.重装系统需要备份的资料总结..
    poj3078
    poj3009
    poj2151
    poj3274
    poj3436
    VC++:打开、保存文件对话框和浏览文件夹对话框
    目前所有的视频格式都有哪些?
    CMSHFlexGrid 类用法
    Matlab的ActiveX接口_百度文库
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7019847.html
Copyright © 2011-2022 走看看