wikioi 1306 機智Trie樹

來源:互聯網
上載者:User

標籤:des   style   color   strong   os   資料   

題目描述  Description

       看廣播操無聊得很~你有覺得嗎?在看廣播操一波又一波的人潮湧過再退去。覺得很沒意思……於是,偶們的大神犇JHT發明了一個及其好玩的遊戲~

       把每一班級的隊形看成一個字母(僅可能為大寫字母),然後按他們的出場順序無聊地排成一串,成為了一個著名的字串!JHT神犇想看看一個年級中,一共有多少種不同的出場組合(LCZ:說白了就是求字串內的非空子串的數量!)。

輸入描述  Input Description

       1行:一個字串s

輸出描述  Output Description

       1行:一個數字(s字串的不同非空子串數)

範例輸入  Sample Input

AAABBBCCC

範例輸出  Sample Output

36

資料範圍及提示  Data Size & Hint

時間限制 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;}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.