青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

算法學社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0

題目簡介:

    給一個長度為N(N<600,000)的序列,讓你按順序插入靜態(tài)二叉樹。然后DFS出一個序列,問某個模式串在這個序列中出現(xiàn)了幾次?

吐槽:

    被KMP卡了一個晚上是什么水平? 數(shù)組開小了WA了一下午是什么水平?

算法分析:

    比較難想的是如何實現(xiàn)這個靜態(tài)二叉樹,因為要一個DFS序列,所以組織靜態(tài)二叉樹是不可逃避的了。
    這里用到一個結論,就是新插入的數(shù)的父親,要么是比它大的最小的那個元素,要么是比它小的最大的那個元素。
    然后套一個KMP就水過了。。。。
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cassert>
 5 using namespace std;
 6 const int N = 600005;
 7 template <typename T> inline void chkmin(T &a,T b){if(a>b) a=b;}
 8 template <typename T> inline void chkmax(T &a,T b){if(a<b) a=b;}
 9 bool ch[N<<2];
10 char parten[10000];
11 int nxt[N],seg[N<<2][2], stk[N], vis[N], hash[N];
12 const int inf = ~0u>>2;
13 struct tree{
14     int l,r,v;
15     tree(){}
16     tree(int _l,int _r,int _v) : l(_l), r(_r), v(_v) {}
17 } num[N];
18 int n,len;
19 int main(){
20     int test,M;
21     cin >> test;
22     for(int _=1;_<=test;_++){
23         cin >> n;
24         int v,val;
25         for(int i=30;i>=0;i--) if((1<<i)>=n) M = 1<<i;
26         for(int i=0;i<2*M;i++) seg[i][1] = -1, seg[i][0] = inf;
27         for(int i=0;i<n;i++){
28             scanf("%d",&v);
29             val = v;
30             hash[val] = i;
31             if(i==0) {
32                 num[0] = tree(-1,-1,v); 
33                 v += M-1;
34                 while(v){seg[v][0] = seg[v][1] = val;v>>=1;}
35                 continue;
36             }
37             num[i] = tree(-1,-1,v);
38             int mn = -1, mx = inf;
39             for(v += M-1; v; v>>=1){
40                 chkmin(seg[v][0],val);
41                 chkmax(seg[v][1],val);
42                 if(v&1) chkmax(mn,seg[v^1][1]);
43                 else chkmin(mx, seg[v^1][0]);
44             }
45             //cout<<val<<" "<<mn<<" "<<mx<<endl;
46             if(mn == -1 || num[hash[mn]].r !=-1){
47                 num[hash[mx]].l = i;
48             } else num[hash[mn]].r = i;
49         }
50         len = 0;
51         
52         for(int i=0;i<n;i++) vis[i] = 0;
53         int tp = 0,u;stk[0] =0;
54         while(!vis[0]) {
55             u = stk[tp];
56             ch[len++] = num[u].v & 1;
57             v = num[u].l;
58             if(v!=-1 && !vis[v]) {stk[++tp] = v; continue;}
59             v = num[u].r;
60             if(v!=-1 && !vis[v]) {stk[++tp] = v; continue;}
61             tp--;
62             vis[u] = 1;
63         }
64 //        for(int i=0;i<len;i++) cout<<ch[i]<<" ";cout<<endl;
65         
66         scanf("%s",parten);
67         nxt[0] = -1; int m = strlen(parten);
68         int j = -1;
69         for(int i=0;i<m;i++) parten[i] -='0';
70         for(int i=1;i<m;i++){
71             while(j>=0 && parten[i]!=parten[j+1])    
72                 j=nxt[j];
73             if(parten[i]==parten[j+1]) j++; 
74             nxt[i] = j;
75         }
76 //        for(int i=0;i<m;i++) cout<<nxt[i]<<" "; cout<<endl;
77         int ans = 0; j = -1;
78         for(int i=0;i<len;i++){
79 //            cout<<j<<" ";
80             while(j>=0 && parten[j+1]!=ch[i]) j = nxt[j]; 
81             if(parten[j+1]==ch[i]) 
82                 j++;
83             if(j == m-1) {
84                 ans++;
85                 j = nxt[j];
86             }
87         }
88         printf("Case #%d: %d\n",_,ans);
89     }
90 }
91 
posted on 2012-07-02 15:14 西月弦 閱讀(622) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产日韩高清一区二区三区在线| 国内外成人在线| 一区二区三区三区在线| 亚洲国产成人午夜在线一区| 久久国产视频网站| 久久国产精品第一页 | 亚洲国产精品一区二区第四页av| 国产农村妇女毛片精品久久麻豆| 国产日产欧产精品推荐色| 国产性猛交xxxx免费看久久| 国语自产偷拍精品视频偷| 亚洲国产日韩一区二区| 亚洲视频在线观看一区| 久久久国产亚洲精品| 亚洲大片免费看| 亚洲一区二区三区中文字幕在线| 欧美在线观看视频一区二区| 欧美成人免费网站| 欧美视频在线一区二区三区| 黑人中文字幕一区二区三区| 亚洲精品在线看| 久久www成人_看片免费不卡| 欧美激情一区二区三区在线视频| av成人老司机| 久久五月天婷婷| 国产精品久久久久久久7电影| 伊人影院久久| 午夜久久电影网| 亚洲国产激情| 欧美专区第一页| 国产精品国产精品国产专区不蜜| 在线视频国产日韩| 午夜精品视频在线观看| 亚洲高清视频中文字幕| 欧美在线视频全部完| 欧美午夜一区二区三区免费大片 | 欧美日韩伦理在线免费| 好吊妞这里只有精品| 亚洲一二三区在线观看| 免费在线亚洲| 亚洲欧美日韩国产| 欧美日韩一区精品| 亚洲精品在线一区二区| 美女在线一区二区| 欧美中文字幕在线| 国产嫩草一区二区三区在线观看| 99riav久久精品riav| 欧美国产91| 久久亚洲综合色一区二区三区| 国产午夜亚洲精品不卡| 欧美电影在线观看| 国产欧美日韩麻豆91| 亚洲国产黄色片| 久久亚洲精品一区二区| 亚洲在线不卡| 国产精品午夜久久| 欧美一级午夜免费电影| 一本色道久久综合狠狠躁篇怎么玩 | av72成人在线| 亚洲人成人一区二区三区| 久久一区二区三区超碰国产精品| 国产亚洲观看| 久久人人97超碰精品888| 西西裸体人体做爰大胆久久久| 国产精品毛片a∨一区二区三区| 一区二区三区欧美激情| 亚洲精品一区二区三区四区高清| 亚洲日韩中文字幕在线播放| 久久久国产视频91| 久久精品综合网| 在线看国产一区| 亚洲高清视频一区二区| 欧美激情一区二区三区全黄| 99精品福利视频| 亚洲视频二区| 黄色成人在线网站| 亚洲福利专区| 国产精品99一区二区| 久久精品国产77777蜜臀| 久久九九全国免费精品观看| 亚洲国产精品久久久久秋霞不卡| 亚洲国产婷婷香蕉久久久久久99 | 性色一区二区| 亚洲国产经典视频| 一本综合久久| 国产亚洲欧美一区二区三区| 乱人伦精品视频在线观看| 欧美mv日韩mv国产网站app| 亚洲一区二区三区国产| 欧美一区二区三区视频免费播放| 在线播放日韩| 一区二区高清视频| 国产一区在线免费观看| 亚洲国产精品一区二区三区| 国产精品视频自拍| 亚洲国产成人av| 国产精品自拍一区| 亚洲国产清纯| 国内久久精品视频| 中日韩美女免费视频网址在线观看| 国产精品羞羞答答| 亚洲国产精品国自产拍av秋霞| 国产精品一区在线观看你懂的| 欧美电影在线| 美女图片一区二区| 欧美亚洲综合网| 亚洲精品在线二区| 久久久久久噜噜噜久久久精品 | 欧美中文在线免费| 欧美成在线观看| 久久女同精品一区二区| 欧美午夜精品久久久| 亚洲第一色中文字幕| 国产一区二区三区在线观看视频| 99精品国产高清一区二区| 亚洲国产欧美一区二区三区同亚洲 | 香港成人在线视频| 欧美福利电影在线观看| 欧美一区免费| 欧美深夜福利| 亚洲国产一区在线| 亚洲电影专区| 久久精品卡一| 久久久999精品视频| 欧美视频一区二区| 亚洲欧洲另类国产综合| 亚洲激情偷拍| 毛片精品免费在线观看| 麻豆精品精华液| 国产日韩欧美电影在线观看| 亚洲午夜精品久久久久久app| 一区二区三区久久久| 欧美美女视频| 亚洲激情在线| 亚洲三级色网| 欧美国产另类| 亚洲日本中文字幕免费在线不卡| 亚洲激情中文1区| 欧美岛国在线观看| 亚洲欧洲一区| 亚洲神马久久| 国产精品免费网站在线观看| 亚洲午夜精品一区二区三区他趣| 亚洲综合精品四区| 国产精品午夜电影| 久久精品国产在热久久 | 久久一区二区三区国产精品| 国产欧美日韩不卡| 久久精品国产69国产精品亚洲| 久久人人爽爽爽人久久久| 狠狠入ady亚洲精品经典电影| 久久国产精品99国产精| 欧美gay视频激情| 亚洲高清色综合| 欧美日韩精品在线视频| 亚洲私人影院| 久久久久免费视频| 亚洲经典在线| 欧美性猛片xxxx免费看久爱| 亚洲在线观看免费视频| 亚洲自拍偷拍色片视频| 国产欧美一区二区白浆黑人| 久久理论片午夜琪琪电影网| 欧美黄色片免费观看| 亚洲视频你懂的| 国产亚洲va综合人人澡精品| 久久亚洲一区| 亚洲视频在线观看视频| 一本色道久久综合亚洲精品不| 国产综合av| 欧美成人一区二区在线| a4yy欧美一区二区三区| 久久国产日韩| 一本久久综合亚洲鲁鲁| 国产视频一区在线观看一区免费| 久久最新视频| 亚洲图片在线| 亚洲福利视频免费观看| 欧美一区二区三区日韩| 亚洲精品欧美日韩专区| 国产色产综合产在线视频| 你懂的视频欧美| 午夜精品福利视频| 亚洲免费高清视频| 老司机免费视频一区二区| 亚洲一卡二卡三卡四卡五卡| 在线欧美小视频| 国产九九精品视频| 欧美日韩人人澡狠狠躁视频| 久久久亚洲国产天美传媒修理工| 亚洲视频免费观看| 亚洲国产一区在线| 你懂的视频欧美| 欧美一区二区三区在线视频 | 夜夜嗨av一区二区三区四季av| 国产欧美精品在线| 国产精品国产精品| 欧美日韩一区二区在线播放| 欧美激情导航| 美女精品一区|