傳送門 題意
給出a集合的0/1串,問b中的串 包涵a中的與被a中包涵的個數
把a中的建乙個trie樹,維護結尾的節點,路上經過的節點的cnt
查詢b,就是到b路徑中結尾的節點(包涵a) 和經過b結尾的節點(被包涵)
#include#define n 10005
#define m 500005
using namespace std;
int a[n],b[n],n,m;
int ch[m][2],cnt[m],rt[m],tot=1;
//b 包涵 a -> 順著找rt
//b 被 a 包涵 找b的端點的cnt
void build(int x)
rt[now]++;
}int find(int x)
ans += cnt[now]-rt[now];
return ans;
}int main()
for(int i=1;i<=m;i++)
}
trie 秘密訊息
貝茜正在領導奶牛們逃跑 為了聯絡,奶牛們互相傳送秘密資訊 資訊是二進位制的,共有m 1 m 50000 條 反間諜能力很強的約翰已經部分攔截了這些資訊,知道了第i條二進位制資訊的前bi l bi 10000 位 他同時知道,奶牛使用n 1 n 50000 條密碼 但是,他僅僅了解第j條密碼的前cj ...
洛谷2922 秘密訊息(Trie樹)
既然是讀入字串然後與之前的字串進行匹配,那麼肯定是對之前的字串建立trie樹,這點毋庸置疑。那麼就是統計有多個字串作為他的字首出現以及該字串是多少個字串的字首,那麼就與 簿一題類似了。我記錄經過該點的字串數量以及以該點作為結束點的數量,那麼最後答案就是這條路徑上結束點的數量之和 經過最後點的字串數量...
Trie樹(字典樹)
trie樹的核心思想是用空間換時間,通過在樹中儲存字串的公共字首,來達到加速檢索的目的。例如,對於一棵儲存由英文本母組成的字串的trie樹,如下圖 trie樹在實現的時候,可以用左兒子右兄弟的表示方法,也可以在每個節點處開設乙個陣列,如上圖的方法。trie樹的主要操作是插入 查詢,也可以進行刪除。插...