資料結構 刷題記錄 字典樹

2021-10-02 15:07:06 字數 1656 閱讀 4654

acwing 124 字首統計

解題思路:因為查詢的是字首,只需要將單詞中的每個字母的cnt相加即可

**:

#includeusing namespace std;

const int maxn=1e6+7;

int son[maxn][26],cnt[maxn],idx;

char str[maxn];

void add(char *str)

cnt[p]++;

}int ask(char *str)

return res;

}void ac()

while(m--)

cnt[p]++;

}int query(char *str)

return cnt[p];

}int main()

return 0;

}

acwing 143. 最大異或對

解題思路:有點貪心的感覺,我們每一次都走與當前這一位相反的位置,也就是讓異或值最大,如果說沒有相反的位置可以走的話,那麼就走相同的位置.

**:

#includeusing namespace std;

const int n = 100010, m = 3000000;

int n;

int a[n], son[m][2], idx;

void insert(int x)

}int search(int x)

else p = son[p][s];

}return res;

}int main()

int res = 0;

for (int i = 0; i < n; i ++ ) res = max(res, search(a[i]));

printf("%d\n", res);

return 0;

}

acwing161. **列表

思路:滿足答案的關係只有兩種,一種是插入的串是之前的串的字首,那麼只要看在插入過程中是不是沒有新增節點;另一種是插入的串包括之前的串,也就是之前的串是插入的串的字首,這個只要看看有沒有走到打了標記的點就好了。所以只需要在插入時判斷即可;

#includeusing namespace std;

const int maxn=100010;

int son[maxn][10],cnt[maxn],idx;

char str[maxn];

int add(char *str)

cnt[p]=1;

if(f1||f2) return 1;

return 0;

}void ac()

if(flag) puts("yes");

else puts("no");

}}int main()

未完待續

待刷題目合集:字典樹題目 - virtual judge

密碼:ludicpc

字典樹題目總結_天亮說晚安-csdn部落格

資料結構 Trie字典樹

簡介 字典樹 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。優點 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊樹高。性質 1.根節點不包含字元,除根節點外每乙個節點都只包含乙個字元 2.從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字...

資料結構之字典樹

trie又被稱為字首樹 字典樹,所以當然是一棵樹。上面這棵trie樹包含的字串集合是。每個節點的編號是我們為了描述方便加上去的。樹中的每一條邊上都標識有乙個字元。這些字元可以是任意乙個字符集中的字元。比如對於都是小寫字母的字串,字符集就是 a z 對於都是數字的字串,字符集就是 0 9 對於二進位制...

python資料結構 字典分組記錄

1 通過某個欄位將記錄分組 使用場景 字典或者例項的序列,然後你想根據某個特定的字段比如 date 來分組迭代訪問 from operator import itemgetter from itertools import groupby rows rows.sort key itemgetter ...