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

算法學社
記錄難忘的征途
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>
            国产乱码精品一区二区三区不卡 | 国产一区二区三区高清| 麻豆免费精品视频| 久久三级视频| 另类专区欧美制服同性| 久久亚洲国产精品日日av夜夜| 午夜视频久久久久久| 欧美一区二区在线播放| 欧美中文在线观看国产| 欧美在线视频一区| 巨乳诱惑日韩免费av| 欧美大片免费观看在线观看网站推荐 | 国产麻豆精品视频| 国产一区再线| 99re6热只有精品免费观看| 午夜精品剧场| 亚洲九九精品| 欧美高清一区| 先锋亚洲精品| 国模大胆一区二区三区| 久久久久亚洲综合| 日韩视频免费大全中文字幕| 欧美国产综合视频| 9i看片成人免费高清| 一本色道久久综合亚洲精品不卡| 欧美另类在线播放| 欧美尤物巨大精品爽| 久久综合九色综合欧美就去吻 | 欧美一区二区三区男人的天堂 | 亚洲午夜一区二区三区| 国产精品乱码| 欧美大片91| 国产精品久久久久一区二区三区共| 久久精品视频播放| 欧美另类亚洲| 欧美96在线丨欧| 国内久久婷婷综合| 麻豆精品网站| 欧美日韩国产美| 性欧美大战久久久久久久免费观看 | 99精品免费| 国产一区二区三区日韩| 久久精品国产999大香线蕉| 欧美一区免费| 亚洲国产一区视频| 9i看片成人免费高清| 国产精品欧美风情| 久久一区二区三区国产精品 | 国产精品高潮粉嫩av| 亚洲人成人77777线观看| 免费成人av资源网| 欧美精品一区二区高清在线观看| 在线观看三级视频欧美| 欧美激情 亚洲a∨综合| 国产精品色网| 日韩视频永久免费观看| 国产在线观看一区| 可以看av的网站久久看| 欧美国产视频一区二区| 久久人人看视频| 欧美日韩人人澡狠狠躁视频| 老巨人导航500精品| 国产精品xxxav免费视频| 一区二区三区高清视频在线观看| 午夜精品短视频| 亚洲国产精品久久| 国产精品视频免费观看| 国产精品99久久久久久www| 亚洲人被黑人高潮完整版| 欧美韩日一区| 亚洲高清资源| 国产尤物精品| 美玉足脚交一区二区三区图片| 美女在线一区二区| 亚洲国产专区校园欧美| 欧美日韩在线播放一区| 亚洲视频在线观看网站| 亚洲一区二区三区在线看| 欧美视频免费看| 国产精品三区www17con| 亚洲国产欧美一区二区三区同亚洲| 欧美一区二区三区视频在线观看| 亚洲国语精品自产拍在线观看| 亚洲乱码日产精品bd| 国产婷婷色一区二区三区在线| 欧美精品一区二区三区在线播放| 亚洲欧美日韩高清| 一本一本a久久| 一本到12不卡视频在线dvd| 欧美激情网友自拍| 亚洲一二三四久久| 亚洲在线中文字幕| 99在线精品视频| 国产欧美 在线欧美| 亚洲欧美成人综合| 一区二区三区精品国产| 欧美高清视频一区| 亚洲日本欧美日韩高观看| 国精品一区二区三区| 亚洲一级特黄| 亚洲一区二区高清| 欧美日韩在线亚洲一区蜜芽| 蜜桃久久av一区| 亚洲精品欧美精品| 国产精品国产三级国产专区53| 亚洲国产精品成人久久综合一区| 亚洲国产精品视频| 欧美视频亚洲视频| 亚洲欧美综合另类中字| 久久免费午夜影院| 一本色道久久综合亚洲二区三区 | 国产综合自拍| 亚洲天堂av综合网| 亚洲精品1区| 夜夜嗨av一区二区三区网站四季av| 99亚洲视频| 国产亚洲人成a一在线v站| 国产精品成人一区二区三区夜夜夜| 久久综合伊人77777麻豆| 亚洲人成7777| 国产一区二区三区不卡在线观看| 嫩草影视亚洲| 亚洲欧美成人一区二区三区| 亚洲国产婷婷| 亚洲激情影视| 久久成人免费| 国产一区二区中文| 在线亚洲一区| 日韩午夜av电影| 美女国产一区| 久久久久久9999| 国产精品一区免费在线观看| 亚洲另类在线视频| 日韩午夜激情| 欧美激情综合五月色丁香小说 | 午夜精品区一区二区三| 欧美日韩另类在线| 亚洲久色影视| 亚洲性视频网站| 欧美性猛交99久久久久99按摩| 亚洲每日在线| 欧美一区二区三区日韩| 国产欧美日韩麻豆91| 欧美在线不卡视频| 麻豆精品在线视频| 亚洲激情网站| 欧美岛国激情| 99视频一区| 午夜欧美理论片| 国内精品久久久久伊人av| 欧美一区二区三区免费观看视频| 久久女同互慰一区二区三区| 一区二区三区在线视频观看| 久久综合久久美利坚合众国| 欧美激情一区二区在线| 亚洲三级视频| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲综合色噜噜狠狠| 久久久久久久综合| 亚洲精品女av网站| 国产精品毛片a∨一区二区三区|国| 欧美在线国产| 亚洲黄色在线视频| 欧美一级夜夜爽| 亚洲国产成人精品视频| 欧美日韩精品欧美日韩精品一| 亚洲一级高清| 美女性感视频久久久| 亚洲午夜伦理| 一色屋精品亚洲香蕉网站| 欧美激情第三页| 欧美一级片在线播放| 亚洲韩国青草视频| 久久久久一区| 正在播放亚洲一区| 国产一区二区三区的电影| 欧美乱在线观看| 久久精品国产99国产精品| 亚洲精品欧美日韩| 久久视频这里只有精品| 玖玖在线精品| 亚洲欧美日韩一区二区在线| 亚洲国产成人在线| 欧美伊人久久| 在线综合欧美| 亚洲高清自拍| 国产欧美日韩高清| 欧美日本在线视频| 久久久水蜜桃| 午夜精品久久久99热福利| 日韩午夜中文字幕| 亚洲国产日韩一区| 久久久亚洲国产天美传媒修理工| 亚洲天堂av在线免费| 亚洲作爱视频| 最近中文字幕mv在线一区二区三区四区| 久久国产66| 性欧美video另类hd性玩具| 亚洲四色影视在线观看| 日韩视频免费在线|