SDUT 3039 迷之好奇 字典樹

2021-08-06 02:44:20 字數 734 閱讀 7564

題目鏈結

給定n個數字的集合,對於數字x,集合中有多少個數字在x前面新增任意數字可以得到。

首先先將輸入的字元逆序,這樣就可以轉化為字首的問題。

由測試資料可以看出,當要查詢的x為集合中的某一數字時,是不進行計數的。

將數字逆序構建字典樹,cnt用來計算字元在字典樹特定位置中出現的次數,在最後的位置cnt需要減去1,因為完整的字元不符合。當要查詢乙個字首的時候,只需要輸出他最後乙個字元的cnt即可。

#include 

using

namespace

std;

const

int en = 10;

const

int maxn = 1e6;

struct trie

t[maxn];

int top;

inline

int idx(char c)

inline trie * creattrie()

inline trie * init()

void insert(trie *root, string s)

p -> cnt --;

}int search(trie *root, string s)

return p -> cnt;

}int main()

return

0;}

SDUT 迷之好奇

include include int top struct node st 5001000 int creat void insertt int root,char s st root flag root st root next t int cmp char s,int root root st...

SDUT OJ 迷之好奇 (字典樹

time limit 2000 ms memory limit 65536 kib submit statistic problem description ff得到了乙個有n個數字的集合。不要問我為什麼,有錢,任性。ff很好奇的想知道,對於數字x,集合中有多少個數字可以在x前面新增任意數字得到。如...

sdut oj 迷之好奇(字典樹)

problem description ff得到了乙個有n個數字的集合。不要問我為什麼,有錢,任性。ff很好奇的想知道,對於數字x,集合中有多少個數字可以在x前面新增任意數字得到。如,x 123,則在x前面新增數字可以得到4123,5123等。input 多組輸入。對於每組資料 首先輸入n 1 n ...