洛谷2922 秘密訊息(Trie樹)

2022-08-21 02:03:12 字數 785 閱讀 5115

既然是讀入字串然後與之前的字串進行匹配,那麼肯定是對之前的字串建立trie樹,這點毋庸置疑。

那麼就是統計有多個字串作為他的字首出現以及該字串是多少個字串的字首,那麼就與**簿一題類似了。

我記錄經過該點的字串數量以及以該點作為結束點的數量,那麼最後答案就是這條路徑上結束點的數量之和+經過最後點的字串數量(注意我的pass記錄的不包括最後乙個字元,最後乙個打的是end標記)

#includeusing namespace std;

const int maxn=1e6+10;

const int len=1e4+10;

int n,q;

int siz,k,a[len];

struct trietr[maxn];

int read()

void insert()

int last=0;

for(int i=1;i<=k;++i)

last=tr[last].son[a[i]];

} tr[last].end++;

}int query()

int last=0;

for(int i=1;i<=k;++i)

last=tr[last].son[a[i]];

} ret+=tr[last].pass+tr[last].end;

return ret;

}int main()

for(int i=1;i<=q;++i)

return 0;

}

Trie 洛谷P2922 秘密資訊

給定 n n 個已加密元素,m role presentation m m個鑰匙 感性理解一下。問每把鑰匙串與加密串的最長字首tr iet ri e用su m sum 表示中間字元的出現次數,en d end 表示當前串的出現次數 做一遍tri e tri e即可 include include i...

秘密訊息 trie樹

傳送門 題意 給出a集合的0 1串,問b中的串 包涵a中的與被a中包涵的個數 把a中的建乙個trie樹,維護結尾的節點,路上經過的節點的cnt 查詢b,就是到b路徑中結尾的節點 包涵a 和經過b結尾的節點 被包涵 include define n 10005 define m 500005 usin...

trie 秘密訊息

貝茜正在領導奶牛們逃跑 為了聯絡,奶牛們互相傳送秘密資訊 資訊是二進位制的,共有m 1 m 50000 條 反間諜能力很強的約翰已經部分攔截了這些資訊,知道了第i條二進位制資訊的前bi l bi 10000 位 他同時知道,奶牛使用n 1 n 50000 條密碼 但是,他僅僅了解第j條密碼的前cj ...