題目鏈結給定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 ...