字典樹

UVA 11488
題目鏈接https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2483

給定若干個(gè)01字符串,從這些字符串中選出一個(gè)集合,使得這個(gè)集合所有字符串的最長公共前綴和字符串個(gè)數(shù)相乘最大.

思路:
比較裸的一棵字典樹,回想一下字典樹的性質(zhì),因?yàn)槭窃诓煌墓?jié)點(diǎn)的時(shí)候進(jìn)行分叉,而一個(gè)節(jié)點(diǎn)可能又多個(gè)分叉點(diǎn),如果有3個(gè)分叉點(diǎn)說明到這個(gè)節(jié)點(diǎn)的長度就是這三個(gè)分叉也就是三個(gè)字符串的最長公共前綴的長度,然后再乘分叉數(shù)和原來的ans比較就可以獲得答案了

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;
const int maxnode = 50010 * 2;
const int sigma_size = 12;
long long ans;

struct Trie{
    int ch[maxnode][sigma_size];
    int cnt[maxnode];
    int sz;
    void clear(){
        sz = 1;
        ans = 0;
        memset(ch, 0, sizeof(ch));
        memset(cnt, 0, sizeof(cnt));
    }
    int idx(char c){
        return c - '0';
    }
    void insert(char *s){
        int u = 0, n = strlen(s);
        for(int i = 0;i < n;i ++){
            int c = idx(s[i]);
            if (!ch[u][c]){
                memset(ch[sz], 0, sizeof(ch[sz]));
                ch[u][c] = sz ++;
            }
            u = ch[u][c];
            cnt[u] ++;
            ans = max(ans,(long long)cnt[u] * (i + 1));
        }
    }
};

Trie trie;
int n, t;
char ss[maxnode];
int main(){
    scanf("%d", &t);
    while (t --){
        trie.clear();
        scanf("%d", &n);
        for (int i = 0;i < n;i ++){
            scanf("%s", ss);
            trie.insert(ss);
        }
        cout << ans << endl;
    }
    return 0;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末点额,一起剝皮案震驚了整個(gè)濱河市燥透,隨后出現(xiàn)的幾起案子莲镣,更是在濱河造成了極大的恐慌低缩,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡男图,警方通過查閱死者的電腦和手機(jī)示姿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逊笆,“玉大人栈戳,你說我怎么就攤上這事∧疡桑” “怎么了子檀?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乃戈。 經(jīng)常有香客問我褂痰,道長,這世上最難降的妖魔是什么症虑? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任缩歪,我火速辦了婚禮,結(jié)果婚禮上谍憔,老公的妹妹穿的比我還像新娘匪蝙。我一直安慰自己,他們只是感情好韵卤,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布骗污。 她就那樣靜靜地躺著,像睡著了一般沈条。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诅炉,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天蜡歹,我揣著相機(jī)與錄音,去河邊找鬼涕烧。 笑死月而,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的议纯。 我是一名探鬼主播父款,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瞻凤!你這毒婦竟也來了憨攒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤阀参,失蹤者是張志新(化名)和其女友劉穎肝集,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛛壳,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杏瞻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年所刀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捞挥。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浮创,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出砌函,到底是詐尸還是另有隱情斩披,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布胸嘴,位于F島的核電站雏掠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏劣像。R本人自食惡果不足惜乡话,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耳奕。 院中可真熱鬧绑青,春花似錦、人聲如沸屋群。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芍躏。三九已至邪乍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間对竣,已是汗流浹背庇楞。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留否纬,地道東北人吕晌。 一個(gè)月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像临燃,于是被迫代替她去往敵國和親睛驳。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容

  • (本文轉(zhuǎn)自百度搜索第一個(gè)CSDN博客) 一膜廊、知識簡介 Trie 的強(qiáng)大之處就在于它的時(shí)間復(fù)雜度乏沸。它的插入和查詢時(shí)間...
    Alan66閱讀 832評論 0 0
  • 給定若干字符串,輸出兩兩strcmp比較的時(shí)候每一次比較了多少次 UVA 11732題目鏈接https://uva...
    kisslight閱讀 607評論 0 0
  • 原文鏈接:A Trie in Swift原文日期:2015/08/11 譯者:小鐵匠Linus校對:numbbbb...
    梁杰_numbbbbb閱讀 1,075評論 0 5
  • 一,定義 在計(jì)算機(jī)科學(xué)中,trie溃论,又稱前綴樹或字典樹屎蜓,是一種有序樹,用于保存關(guān)聯(lián)數(shù)組钥勋,其中的鍵通常是字符串炬转。與二...
    evil_ice閱讀 10,603評論 1 3
  • 前段時(shí)間逛論壇辆苔,發(fā)現(xiàn)了一篇高效的字典樹實(shí)現(xiàn)論文,很有意思扼劈。 常見的字典樹實(shí)現(xiàn)方法 class Node{uint ...
    shiy4n閱讀 2,184評論 0 7