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

算法學社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0
A:
簽名題 ... 任何字符串匹配算法都可以 ... 略
B:
...
C:
...
D:
...
E:
...
F:
給一個'0'-'9'的串,要求支持兩種操作
1: 查詢整段區間的最長不下降子串
2: 讓某個區間[l,r]的所有值Si = 9-Si
可以當線段樹模板題
維護最長不下降子串,需要維護下面幾個值以滿足“區間的和”的性質
最長不下降和最長不上升子串簡稱為"LIS"和"LDS",雖然不準確,但是你們忍了吧
(1) 這個區間的全局LIS長度與LDS (mx數組)
(2) 這個區間包含最左端點的LIS和LDS長,包含最右端點的LIS和LDS長 (seg數組,分別對應什么意思自己看吧 )
(3) 這個區間是否是完全不下降(上升)的 (full數組)
(4) 這個區間的最左端點和最右端點的值 (side數組)
  再來一個數組記錄區間是否被修改過...
上面的這些域完全可以支持操作2(見upt函數)和維護LIS了(見sumup函數)....
詢問直接返回mx[1][0]就可以了
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<cassert>
 5 using namespace std;
 6 const int N = 100005;
 7 template <typename T> inline void chkmax(T &a,T b){if(a<b) a=b;}
 8 int seg[N<<2][2][2], side[N<<2][2], mx[N<<2][2], full[N<<2][2],chg[N<<2];
 9 int upt(int pos){
10     for(int i=0;i<2;i++) side[pos][i] = 9- side[pos][i];
11     swap(mx[pos][0],mx[pos][1]);
12     swap(full[pos][0],full[pos][1]);
13     for(int i=0;i<2;i++){
14         swap(seg[pos][0][i],seg[pos][1][i]);
15     }
16 }
17 void pushdown(int pos,int L,int R){
18     if(chg[pos]){
19         upt(pos);
20         chg[pos] = 0;
21         if(L==R) return ;
22         chg[pos<<1] ^=1;
23         chg[pos<<1|1]^=1;
24     }
25 }
26 void sumup(int pos,int L,int R){
27     int mid = L+R >>1;
28     pushdown(pos<<1 , L, mid);
29     pushdown(pos<<1|1,mid+1,R);
30     side[pos][0] = side[pos<<1][0];
31     side[pos][1] = side[pos<<1|1][1];
32     full[pos][0] = full[pos<<1][0] && full[pos<<1|1][0] && side[pos<<1][1] <= side[pos<<1|1][0];
33     full[pos][1] = full[pos<<1][1] && full[pos<<1|1][1] && side[pos<<1][1] >= side[pos<<1|1][0];
34     seg[pos][0][0] = seg[pos<<1][0][0] + (full[pos<<1][0] && side[pos<<1][1] <= side[pos<<1|1][0] ? seg[pos<<1|1][0][0] : 0);
35     seg[pos][1][0] = seg[pos<<1][1][0] + (full[pos<<1][1] && side[pos<<1][1] >= side[pos<<1|1][0] ? seg[pos<<1|1][1][0] : 0);
36     seg[pos][0][1] = seg[pos<<1|1][0][1] + (full[pos<<1|1][0] && side[pos<<1][1] <= side[pos<<1|1][0] ? seg[pos<<1][0][1] : 0);
37     seg[pos][1][1] = seg[pos<<1|1][1][1] + (full[pos<<1|1][1] && side[pos<<1][1] >= side[pos<<1|1][0] ? seg[pos<<1][1][1] : 0);
38 //    cout<<seg[pos][0][1]<<" "<<seg[pos<<1][0][1]<<" "<<seg[pos<<1|1][0][1]<<" "<<full[pos<<1|1]
39     for(int i=0;i<2;i++){
40         mx[pos][i] = max(seg[pos][i][0],seg[pos][i][1]);
41         chkmax(mx[pos][i], max(mx[pos<<1][i] , mx[pos<<1|1][i]) );
42         if( i ? side[pos<<1][1] >= side[pos<<1|1][0]:side[pos<<1][1] <= side[pos<<1|1][0])
43         chkmax(mx[pos][i], seg[pos<<1][i][1] + seg[pos<<1|1][i][0]);
44     }
45 }
46 char num[N];
47 int last;
48 void update(int l,int r,int pos,int L,int R,int flag){
49     if(l<=L && r>=R){
50         if(flag){
51             chg[pos] ^=1;
52         }
53         else {
54             side[pos][0] = side[pos][1] = num[last++] - '0';
55             mx[pos][0] = mx[pos][1] = full[pos][0] = full[pos][1] = 1;
56             for(int i=0;i<2;i++) for(int j=0;j<2;j++) seg[pos][i][j] =1;
57         }
58         return ;
59     }
60     pushdown(pos,L,R);
61     int mid = L+ R >>1;
62     if(l<=mid) update(l,r,pos<<1, L, mid, flag);
63     if(r > mid)update(l,r,pos<<1|1,mid+1,R, flag);
64     sumup(pos,L,R);
65 //    cout<<L<<" "<<R<<" "<<seg[pos][0][1]<<" "<<mx[pos][0]<<endl;
66 }
67 int main(){
68     int t;
69     scanf("%d",&t);
70     while(t--){
71         int n,m;last = 0;
72         scanf("%d%d",&n,&m);
73         scanf("%s",num);
74         memset(chg,0,sizeof(chg));
75         for(int i=0;i<n;i++){
76             update(i,i,1,0,n-1,0);
77         }
78         assert(last==n);
79         char cmd[10];
80         while(m--){
81             scanf("%s",cmd);
82             if(cmd[0]=='q'){
83                 pushdown(1,0,n-1);
84                 printf("%d\n",mx[1][0]);
85             }
86             else {
87                 int l,r;
88                 scanf("%d%d",&l,&r);
89                 l--;r--;
90                 update(l,r,1,0,n-1,1);
91             }
92         }
93         puts("");
94     }
95     return 0;
96 }
97 
G:
...
H:
...
I:
...
J:
...
posted on 2012-05-30 10:33 西月弦 閱讀(344) 評論(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>
            99视频精品全部免费在线| 欲色影视综合吧| 欧美第一黄色网| 国产免费亚洲高清| 黄色国产精品| 午夜精品偷拍| 亚洲人成网站影音先锋播放| 亚洲视频网在线直播| 久久在线视频在线| 国产亚洲一区二区三区在线观看 | 黄色欧美日韩| 日韩小视频在线观看专区| 久久不射中文字幕| 在线一区观看| 99精品国产在热久久婷婷| 久久精品视频网| 性欧美video另类hd性玩具| 欧美激情中文不卡| 91久久综合| 欧美国产一区二区在线观看 | 久久xxxx| 久久全国免费视频| 国产精品久久夜| 亚洲欧美日韩中文在线制服| 久久电影一区| 久久动漫亚洲| 亚洲日本va在线观看| 免费av成人在线| 亚洲宅男天堂在线观看无病毒| 亚洲精品一区二区三区不| 国产亚洲欧美一区二区| 一本一本久久a久久精品综合妖精| 伊甸园精品99久久久久久| 亚洲影院色无极综合| 亚洲一区欧美| 国产情侣久久| 一区二区三区四区精品| 国产伦精品一区二区三区视频黑人 | 每日更新成人在线视频| 亚洲欧美国产视频| 欧美黄色aaaa| 欧美激情91| 国产美女精品在线| 欧美激情影院| 国产专区一区| 日韩亚洲欧美高清| 在线日韩欧美视频| 在线视频精品一| 亚洲人成在线免费观看| 亚洲欧美日韩一区| 夜色激情一区二区| 欧美电影免费观看高清| 久久精品欧洲| 国产欧美日韩专区发布| 亚洲视频久久| 日韩午夜剧场| 欧美激情a∨在线视频播放| 久久精品国产999大香线蕉| 欧美美女喷水视频| 欧美激情视频在线播放| 国产亚洲精品一区二区| 中文精品99久久国产香蕉| 夜夜爽www精品| 欧美日韩在线播放三区四区| 亚洲视频在线一区观看| 欧美日韩国产综合在线| 亚洲免费在线观看视频| 香蕉久久久久久久av网站| 国产精品成人免费| 亚洲欧美日韩综合| 樱花yy私人影院亚洲| 欧美成人久久| 一本久道久久综合中文字幕| 欧美一区二区成人6969| 在线观看欧美日本| 久久天天躁狠狠躁夜夜av| 亚洲在线免费观看| 国产精品一级二级三级| 亚洲自拍偷拍麻豆| 久久国产精品久久久久久电车| 国产精品亚洲精品| 久久久夜色精品亚洲| 羞羞漫画18久久大片| 国产婷婷色综合av蜜臀av| 欧美**字幕| av成人老司机| 一区二区三区免费看| 亚洲免费成人| 国产亚洲视频在线| 欧美高清不卡在线| 久久成人免费网| 欧美人与禽猛交乱配视频| 欧美在线视频免费观看| 亚洲伦伦在线| 亚洲欧美另类国产| 亚洲一区二区三区视频播放| 欧美成人午夜影院| 麻豆精品精华液| 国产精品一区二区久久久| 欧美日韩国产在线播放| 午夜欧美大片免费观看| 亚洲影视综合| 午夜国产精品视频| 午夜国产精品视频免费体验区| 洋洋av久久久久久久一区| 99精品视频一区二区三区| 亚洲尤物精选| 国产一区免费视频| 国产精品欧美日韩| 在线观看日韩www视频免费 | 亚洲欧洲另类国产综合| 亚洲精品在线观| 亚洲激情视频网| 亚洲电影免费| 亚洲视频精选| 欧美精品国产| 国产午夜精品理论片a级大结局 | 亚洲国产高清在线| 欧美一级久久久久久久大片| 欧美成人综合一区| 久久久久国产精品麻豆ai换脸| 一区二区三区鲁丝不卡| 美女视频黄a大片欧美| 亚洲免费观看| 亚洲视频在线免费观看| 久久亚洲二区| 久久精品中文| 91久久久精品| 亚洲精品中文字幕女同| 亚洲网站啪啪| 亚洲天堂男人| 亚洲欧洲av一区二区| 亚洲国产精品va在看黑人| 欧美高清在线一区| 亚洲尤物影院| 国产女人水真多18毛片18精品视频| 亚洲香蕉成视频在线观看| 欧美在线观看视频一区二区三区 | 亚洲欧美大片| 国产精品久久久久久五月尺| 最新热久久免费视频| 一区二区av在线| 国产精品久久一区二区三区| 久久国产精品亚洲va麻豆| 免费日韩av| 亚洲午夜av在线| 国产主播一区| 亚洲一区久久久| 亚洲国产视频一区二区| 亚洲欧美一区二区三区久久| 黄色在线成人| 欧美先锋影音| 亚洲免费观看| 久久精品国产第一区二区三区最新章节| 极品日韩久久| 欧美日韩在线精品一区二区三区| 午夜久久影院| 亚洲国内在线| 久久精品成人一区二区三区蜜臀 | 久久男女视频| 99精品免费视频| 农夫在线精品视频免费观看| 在线亚洲观看| 国产真实久久| 国产精品二区在线| 牛人盗摄一区二区三区视频| 亚洲国产精品123| 香蕉成人久久| 夜夜嗨av一区二区三区网站四季av | 国产亚洲高清视频| 欧美精品在线看| 欧美中文字幕久久| 日韩性生活视频| 欧美sm视频| 久久国产乱子精品免费女| 99re66热这里只有精品4| 韩国av一区二区| 免费看av成人| 欧美在线3区| 午夜精品久久久| 一本色道88久久加勒比精品 | 亚洲狠狠婷婷| 美国成人毛片| 久久动漫亚洲| 先锋影音国产一区| 亚洲一区二区精品视频| 亚洲伦理一区| 亚洲精品乱码久久久久久黑人| 国产日韩在线一区| 欧美视频免费在线| 欧美日韩123| 欧美精品一区二区三区久久久竹菊| 久久精品毛片| 久久精彩免费视频| 在线电影一区| 黄色日韩网站| 精品成人乱色一区二区| 狠狠狠色丁香婷婷综合激情| 国产一区二区三区黄| 国产午夜精品美女视频明星a级 |