<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【字典樹/trie樹】實(shí)現(xiàn)高效插入和查詢字符串的數(shù)據(jù)結(jié)構(gòu)

        本文是https://www.acwing.com/problem/content/description/837/的總結(jié),有興趣可以做做

        字典樹的實(shí)現(xiàn)依賴于樹結(jié)構(gòu),有兩種操作,1是插入字符串,2是查找字符串。使用idx維護(hù)最新的結(jié)點(diǎn)下標(biāo)。如下圖,假設(shè)我們維護(hù)一個

         可以看到,我們維護(hù)了一個樹形結(jié)構(gòu)儲存了左邊的字符串,但是我們不止建立這樣的樹,還得標(biāo)記每個字符串的結(jié)尾

         這樣,當(dāng)我們多次插入像ab這樣的字符串的時候就可以記錄下插入的總數(shù)。我們將每個結(jié)點(diǎn)都標(biāo)記一個編號,根結(jié)點(diǎn)標(biāo)記為0,起全局變量idx實(shí)現(xiàn)。具體代碼實(shí)現(xiàn)如下:

       1 #include<bits/stdc++.h>
       2 #define int long long
       3 using namespace std;
       4 const int INF = 1e18 + 10,maxn = 1e5 + 10;
       5 
       6 int n;
       7 int son[maxn][26],idx,cnt[maxn];
       8 
       9 void insert(char str[]){
      10     int p = 0;
      11     for(int i = 0; str[i] ; i++){
      12         int id = str[i] - 'a';
      13         if(!son[p][id]) son[p][id] = ++idx;
      14         p = son[p][id];
      15     }
      16     cnt[p]++;
      17 }
      18 
      19 int quary(char str[]){
      20     int p = 0;
      21     for(int i = 0; str[i]; i++){
      22         int id = str[i] - 'a';
      23         if(!son[p][id]) return 0;
      24         p = son[p][id];
      25     }
      26     return cnt[p];
      27 }
      28 signed main (){
      29     ios::sync_with_stdio(false);
      30     cin.tie(0),cout.tie(0);
      31     
      32     cin>>n;
      33     char str[maxn];
      34     for(int i = 1; i <= n; i++){
      35         char op;
      36         cin>>op;
      37         cin>>str;
      38         if(op == 'I'){
      39             insert(str);
      40         }else if(op == 'Q'){
      41             cout << quary(str) << '\n';
      42         }
      43     }
      44     
      45     return 0;
      46 }

        在這里解釋以下數(shù)據(jù)結(jié)構(gòu)作用

        son[i][id]//表示結(jié)點(diǎn)i的兒子id是否存在。(還記得嗎,我們使用idx給每個結(jié)點(diǎn)編號)
        idx//當(dāng)更新結(jié)點(diǎn)時++idx,賦予新建立的結(jié)點(diǎn)獨(dú)一無二的編號。
        cnt[i]//表示以結(jié)點(diǎn)i結(jié)尾的字符串的數(shù)量,相當(dāng)于上圖中給每個字符串結(jié)尾標(biāo)記。
      posted @ 2024-01-10 14:05  意外路過的番茄醬騎士  閱讀(76)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 2019nv天堂香蕉在线观看| 欧美激烈精交gif动态图| 精品自拍偷拍一区二区三区| 色吊丝二区三区中文字幕| 国产一区二区三区黄色片| 亚洲精品成人一二三专区| 日本亚洲一区二区精品久久| 国产精品无码午夜福利| 97午夜理论电影影院| 亚洲一区二区三区18禁| 高清破外女出血AV毛片| 熟妇女人妻丰满少妇中文字幕 | 色诱视频在线观看| 国产普通话对白刺激| 视频一区二区不中文字幕| 丰满少妇69激情啪啪无| 久久96热在精品国产高清| 一边捏奶头一边高潮视频| 九九热在线免费视频观看| 男女性杂交内射女bbwxz| 人妻内射一区二区在线视频 | 国产女人被狂躁到高潮小说| 尤物yw193无码点击进入| 在线亚洲妇色中文色综合| 97久久超碰国产精品2021| 97精品国产91久久久久久久| 亚洲欧洲一区二区综合精品| 亚洲欧美在线观看品| 亚洲中文无码永久免费| 91高清免费国产自产拍| 国产欧美日韩精品a在线观看| 日本熟妇人妻一区二区三区| 久久精品国产99国产精品严洲| 女人爽到高潮的免费视频| 亚洲色av天天天天天天| 中文字幕免费不卡二区| 久久这里只精品热免费99| 国产高清乱码又大又圆| 收藏| 高清精品视频一区二区三区| 视频二区中文字幕在线|