字典樹(trie樹) luoguP2922

題目描述

貝茜正在領導奶牛們逃跑.為了聯(lián)絡乐纸,奶牛們互相發(fā)送秘密信息.

信息是二進制的衬廷,共有M(1≤M≤50000)條.反間諜能力很強的約翰已經(jīng)部分攔截了這些信息,知道了第i條二進制信息的前bi(l《bi≤10000)位.他同時知道汽绢,奶牛使用N(1≤N≤50000)條密碼.但是吗跋,他僅僅了解第J條密碼的前cj(1≤cj≤10000)位.

對于每條密碼J,他想知道有多少截得的信息能夠和它匹配.也就是說庶喜,有多少信息和這條密碼有著相同的前綴.當然小腊,這個前綴長度必須等于密碼和那條信息長度的較小者.

在輸入文件中,位的總數(shù)(即∑Bi+∑Ci)不會超過500000.

輸入輸出格式
輸入格式:
*第1行:兩個整數(shù):M和N.

*行2..M + 1:行i + 1描述截取的代碼i久窟,其中包含整數(shù)b_i秩冈,后跟b_i空格分隔的0和1

*行M + 2..M + N + 1:行M + j + 1描述具有整數(shù)c_j的代碼字j,后跟c_j空格分隔的0和1

輸出格式:
*行1..M:行j:第j個代碼字可以匹配的消息數(shù)斥扛。

 這道題用暴力并不好解決入问,而且數(shù)據(jù)量大,更是不可能稀颁。
 下面介紹一個神奇的東西----trie樹
image.png

trie樹將信息存于邊芬失,以點相連,構成一棵樹匾灶,如圖所示棱烂;
從而判斷前綴時可以在原先建成的樹從樹根開始搜;

對于該題阶女,因為要統(tǒng)計前綴的數(shù)目颊糜,需要考慮該串是別的串的前綴的情況,還需要考慮別的串是該串的前綴的情況秃踩。 所以在建樹的時候需要記錄該節(jié)點的子樹上有多少個數(shù)串的結(jié)尾衬鱼,便于統(tǒng)計詢問的串是別的串的前綴的情況;同時在記錄該節(jié)點是多少個數(shù)串的結(jié)尾憔杨,以便于統(tǒng)記別的串是詢問的串的前綴的情況鸟赫;
那么就可以完美的完成這一題了;

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
#define INF 9999999
using namespace std;
struct Node{
    int son[3],path,end;
}N[1000010];
int n,m,bi,cj,cnt=1,a[10010];
void insert(int a[]){
    int now=1;
    for(int i=1;i<=bi;i++){
        if(N[now].son[a[i]]){N[now].path++; now=N[now].son[a[i]];}
        else{N[now].path++; N[now].son[a[i]]=++cnt; now=cnt;} //子樹結(jié)尾數(shù)加一
    }
    N[now].end++;//結(jié)尾數(shù)加一
}
int count(int a[]){
    int now=1,sum=0;
    for(int i=1;i<=cj;i++){
        if(!N[now].son[a[i]]) return sum;
        else{
            sum+=N[N[now].son[a[i]]].end;
            now=N[now].son[a[i]];
        }
    }
    return sum+N[now].path;
}
int main(){
    scanf("%d%d",&m,&n);
    for(int i=1;i<=m;i++){
        scanf("%d",&bi);
        for(int j=1;j<=bi;j++) scanf("%d",&a[j]);
        insert(a); 
    }
    for(int i=1;i<=n;i++){
        scanf("%d",&cj);
        for(int j=1;j<=cj;j++) scanf("%d",&a[j]);
        int ans=count(a); 
        printf("%d\n",ans);
    }
    return 0;
}

點個關注給個贊謝謝啦O稹抛蚤!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妖啥,隨后出現(xiàn)的幾起案子霉颠,更是在濱河造成了極大的恐慌,老刑警劉巖荆虱,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒿偎,死亡現(xiàn)場離奇詭異朽们,居然都是意外死亡,警方通過查閱死者的電腦和手機诉位,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門骑脱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人苍糠,你說我怎么就攤上這事叁丧。” “怎么了岳瞭?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵拥娄,是天一觀的道長。 經(jīng)常有香客問我瞳筏,道長稚瘾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任姚炕,我火速辦了婚禮摊欠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柱宦。我一直安慰自己些椒,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布掸刊。 她就那樣靜靜地躺著免糕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忧侧。 梳的紋絲不亂的頭發(fā)上说墨,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音苍柏,去河邊找鬼。 笑死姜贡,一個胖子當著我的面吹牛试吁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播楼咳,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼熄捍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了母怜?” 一聲冷哼從身側(cè)響起余耽,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苹熏,沒想到半個月后碟贾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體币喧,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年袱耽,在試婚紗的時候發(fā)現(xiàn)自己被綠了杀餐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡朱巨,死狀恐怖史翘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冀续,我是刑警寧澤琼讽,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站洪唐,受9級特大地震影響钻蹬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜桐罕,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一脉让、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧功炮,春花似錦溅潜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嫁怀,卻和暖如春设捐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背塘淑。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工萝招, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人存捺。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓槐沼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捌治。 傳聞我的和親對象是個殘疾皇子岗钩,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

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

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,340評論 0 2
  • 各校歷年復試機試試題 清華、北大肖油、華科試題詳細筆記部分兼吓,少筆記部分與少數(shù)leetcode【含個人整理筆記】 一、詳...
    十里江城閱讀 1,185評論 0 1
  • 01."真正的自由森枪,來自于強有力的自律和自省视搏,當你覺得自由很輕很薄時审孽,那種自由,只能叫做任性凶朗〈呻剩”-曲瑋瑋 002....
    一珈之主閱讀 216評論 0 0