字典樹(增刪改查 HDU 5687)

2022-06-27 07:42:08 字數 1293 閱讀 3779

度熊手上有一本神奇的字典,你可以在它裡面做如下三個操作:

1、insert : 往神奇字典中插入乙個單詞

2、delete: 在神奇字典中刪除所有字首等於給定字串的單詞

3、search: 查詢是否在神奇字典中有乙個字串的字首等於給定的字串

input這裡僅有一組測試資料。第一行輸入乙個正整數n(1

≤n≤100000

)'>n(1≤n≤100000)

,代表度熊對於字典的操作次數,接下來n

'>n

'>n

行,每行包含兩個字串,中間中用空格隔開。第乙個字串代表了相關的操作(包括: insert, delete 或者 search)。第二個字串代表了相關操作後指定的那個字串,第二個字串的長度不會超過30。第二個字串僅由小寫字母組成。output對於每乙個search 操作,如果在度熊的字典中存在給定的字串為字首的單詞,則輸出yes 否則輸出 no。sample input

5

insert hello

insert hehe

search h

delete he

search hello

n

'>n

'>sample output

yes

no思路分析 : 字典樹板子題,唯一有個要注意的地方就是刪除操作,你要刪除具有公共字首的所有串,首先可以先計算出公共字首的個數,然後再去處理一遍所要處理的串,給每個節點刪除掉公共字首的個數,

將最後乙個點的 val 變為 0 ,並且將其 next 全部變為 0即可。

**示例 :

#define ll long long

const int maxn = 1e6+5;

const double pi = acos(-1.0);

const int inf = 0x3f3f3f3f;

struct node

t[maxn];

char f[20], s[50];

int rt = 1;

int num;

void insert()

}void del()

t[u].val = 0;

for(int j = 0; j < 26; j++) t[u].next[j] = 0;

}int search()

return t[u].val;

}int main()

else

}return 0;

}

hdu5687(最容易理解的字典樹)

字典樹模板題。涉及到字典樹的插入,查詢,刪除操作。最開始使用的是動態陣列來解,這樣做的話,如果測試樣例先是刪除操作,就會報陣列溢位錯誤。奉上字典樹模板 開始使用這個模板時,說這個模板容易爆記憶體溢位,不過多慮了 大概開350萬才會爆 除此之外時間也稍微久了一點,但是理解相比其它字典樹模板也更加容易 ...

字典的增刪改查。

增 有則修改,無則新增 dic key 要增加的內容 如果dict中沒有出現這個key,就會新增 乙個key value的組合進dict 有則不變,無則新增 dic.setdefault 李嘉誠 也可以往 裡 面設定值.dic.setdefault 李嘉誠 房地產 如果dict中已經存在了.那麼se...

字典的增刪改查

可以儲存大量的資料,有較強的關聯性,容器型資料型別 dict 資料型別的分類 可變與不可變 可變 不可雜湊 的資料型別 list dict set 不可變 可雜湊 的資料型別 str bool int tuple 字典是用 括起來,以鍵值對形似儲存的容器型資料型別 字典的鍵是不可變的 如int st...