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

Omni Inspirations

problems & programs ~

統(tǒng)計

留言簿

Friends

閱讀排行榜

評論排行榜

SCTSC 2010 序列操作

題意:
給定一個N<=100000個數(shù)的01序列,要你支持共Q<=100000個五種操作
0 a b 把[a, b]區(qū)間內(nèi)的所有數(shù)全變成0
1 a b 把[a, b]區(qū)間內(nèi)的所有數(shù)全變成1
2 a b 把[a,b]區(qū)間內(nèi)的所有數(shù)全部取反,也就是說把所有的0變成1,把所有的1變成0
3 a b 詢問[a, b]區(qū)間內(nèi)總共有多少個1
4 a b 詢問[a, b]區(qū)間內(nèi)最多有多少個連續(xù)的1

做法:
我只會用很傻逼的方法(雖然在八中oj上跑的最快)
線段樹里保存很多很多值:
左邊開始最多有多少個0 多少個1
右邊開始最多有多少個0 多少個1
區(qū)間內(nèi)最大連續(xù)有多少個0 多少個1
區(qū)間總共有多少個0 多少個1
區(qū)間是否被0或者1 覆蓋
區(qū)間是否被取反

如果沒有取反的操作 那么就很簡單
有了取反的操作:

假設(shè)取反前已經(jīng)被0或者1覆蓋 那么把這個值取反
如果沒有被0或者1覆蓋 那么將 區(qū)間取反標(biāo)記 取反
如果該區(qū)間被覆蓋了  無論之前有沒有被取反 取反標(biāo)記都是無用的

這樣就可以解決這個問題了。。

ps:這個題調(diào)了我2個小時。。結(jié)果是因?yàn)閼械脤慠ch 直接復(fù)制Lch 有幾個地方還是Lch 沒改成Rch....好2的錯誤

  1#include <cstdio>
  2
  3#define Lch(t) (t<<1)
  4#define Rch(t) ((t<<1)+1)
  5#define max(a,b) ((a)>(b)?(a):(b))
  6struct Tnode
  7{
  8    int lm[2],rm[2],d[2],s[2],m[2],last;
  9    bool inv;
 10}
    T[400005];
 11int A[100005],N,M;
 12inline void swap(int &u,int &v)
 13{
 14    int t=u;u=v;v=t;
 15}

 16inline void Downdraw(int t,int L,int R,int c)
 17{
 18    T[Lch(t)].lm[c]=T[Lch(t)].rm[c]=T[Lch(t)].m[c]=T[Lch(t)].s[c]=L;
 19    T[Lch(t)].lm[c^1]=T[Lch(t)].rm[c^1]=T[Lch(t)].m[c^1]=T[Lch(t)].m[c^1]=T[Lch(t)].s[c^1]=0;
 20    T[Lch(t)].d[c]=1,T[Lch(t)].d[c^1]=0;
 21    T[Rch(t)].lm[c]=T[Rch(t)].rm[c]=T[Rch(t)].m[c]=T[Rch(t)].s[c]=R;
 22    T[Rch(t)].lm[c^1]=T[Rch(t)].rm[c^1]=T[Rch(t)].m[c^1]=T[Rch(t)].m[c^1]=T[Rch(t)].s[c^1]=0;
 23    T[Rch(t)].d[c]=1,T[Rch(t)].d[c^1]=0;
 24    T[Lch(t)].inv=T[Rch(t)].inv=0;
 25    T[t].d[c]=0;
 26}

 27inline void Downinve(int t,int L,int R)
 28{
 29    swap(T[Lch(t)].lm[0],T[Lch(t)].lm[1]);
 30    swap(T[Lch(t)].rm[0],T[Lch(t)].rm[1]);
 31    swap(T[Lch(t)].m[0],T[Lch(t)].m[1]);
 32    swap(T[Lch(t)].s[0],T[Lch(t)].s[1]);
 33    swap(T[Lch(t)].d[0],T[Lch(t)].d[1]);
 34    if (!T[Lch(t)].d[0]&&!T[Lch(t)].d[1])    T[Lch(t)].inv^=1;
 35    swap(T[Rch(t)].lm[0],T[Rch(t)].lm[1]);
 36    swap(T[Rch(t)].rm[0],T[Rch(t)].rm[1]);
 37    swap(T[Rch(t)].m[0],T[Rch(t)].m[1]);
 38    swap(T[Rch(t)].s[0],T[Rch(t)].s[1]);
 39    swap(T[Rch(t)].d[0],T[Rch(t)].d[1]);
 40    if (!T[Rch(t)].d[0]&&!T[Rch(t)].d[1])    T[Rch(t)].inv^=1;
 41    T[t].inv=0;
 42}

 43inline void Down(int t,int L,int R)
 44{
 45    int c=-1;
 46    if (T[t].d[0]>0)    c=0;
 47    if (T[t].d[1]>0)    c=1;
 48    if (c>=0)    Downdraw(t,L,R,c);
 49    else
 50    if (T[t].inv)    Downinve(t,L,R);
 51}

 52inline void Update(Tnode &t,Tnode &l,Tnode &r,int L,int R)
 53{
 54    for (int i=0;i<2;++i)
 55    {
 56        t.lm[i]=l.lm[i],t.rm[i]=r.rm[i];
 57        if (l.lm[i]==L)    t.lm[i]=L+r.lm[i];
 58        if (r.rm[i]==R)    t.rm[i]=l.rm[i]+R;
 59        t.s[i]=l.s[i]+r.s[i];
 60        t.m[i]=max(l.m[i],r.m[i]);
 61        t.m[i]=max(t.m[i],l.rm[i]+r.lm[i]);
 62    }

 63}

 64inline void Build(int t,int l,int r)
 65{
 66    if (l==r)
 67    {
 68        T[t].lm[A[l]]=T[t].rm[A[l]]=T[t].m[A[l]]=T[t].s[A[l]]=1;
 69        return;
 70    }

 71    int mid=(l+r)>>1,L=mid-l+1,R=r-mid;
 72    Down(t,L,R);
 73    Build(Lch(t),l,mid);
 74    Build(Rch(t),mid+1,r);
 75    Update(T[t],T[Lch(t)],T[Rch(t)],L,R);
 76}

 77inline void Draw(int t,int l,int r,int ll,int rr,int c)
 78{
 79    if (ll==l&&rr==r)
 80    {
 81        T[t].lm[c]=T[t].rm[c]=T[t].m[c]=T[t].m[c]=T[t].s[c]=r-l+1;
 82        T[t].lm[c^1]=T[t].rm[c^1]=T[t].m[c^1]=T[t].m[c^1]=T[t].s[c^1]=0;
 83        T[t].d[c]=1,T[t].d[c^1]=0;
 84        T[t].inv=0;
 85        return;
 86    }

 87    int mid=(l+r)>>1,L=mid-l+1,R=r-mid;
 88    Down(t,L,R);
 89    if (rr<=mid)    Draw(Lch(t),l,mid,ll,rr,c);
 90    else
 91    if (ll>mid)    Draw(Rch(t),mid+1,r,ll,rr,c);
 92    else
 93    {
 94        Draw(Lch(t),l,mid,ll,mid,c);
 95        Draw(Rch(t),mid+1,r,mid+1,rr,c);
 96    }

 97    Update(T[t],T[Lch(t)],T[Rch(t)],L,R);
 98}

 99inline void Inverse(int t,int l,int r,int ll,int rr)
100{
101    if (ll==l&&rr==r)
102    {
103        swap(T[t].lm[0],T[t].lm[1]);
104        swap(T[t].rm[0],T[t].rm[1]);
105        swap(T[t].m[0],T[t].m[1]);
106        swap(T[t].s[0],T[t].s[1]);
107        swap(T[t].d[0],T[t].d[1]);
108        if (!T[t].d[0]&&!T[t].d[1])    T[t].inv^=1;
109        return;
110    }

111    int mid=(l+r)>>1,L=mid-l+1,R=r-mid;
112    Down(t,L,R);
113    if (rr<=mid)    Inverse(Lch(t),l,mid,ll,rr);
114    else
115    if (ll>mid)    Inverse(Rch(t),mid+1,r,ll,rr);
116    else
117    {
118        Inverse(Lch(t),l,mid,ll,mid);
119        Inverse(Rch(t),mid+1,r,mid+1,rr);
120    }

121    Update(T[t],T[Lch(t)],T[Rch(t)],L,R);
122}

123inline Tnode Query(int t,int l,int r,int ll,int rr)
124{
125    if (ll==l&&rr==r)    return T[t];
126    int mid=(l+r)>>1,L=mid-l+1,R=r-mid;
127    Down(t,L,R);
128    if (rr<=mid)    return Query(Lch(t),l,mid,ll,rr);
129    if (ll>mid)    return Query(Rch(t),mid+1,r,ll,rr);
130    Tnode left=Query(Lch(t),l,mid,ll,mid);
131    Tnode right=Query(Rch(t),mid+1,r,mid+1,rr);
132    Tnode ret;Update(ret,left,right,L,R);
133    return ret;
134}

135int main()
136{
137    int a,b,c;
138    scanf("%d%d",&N,&M);
139    for (int i=1;i<=N;++i)
140        scanf("%d",&A[i]);
141    Build(1,1,N);
142    for (;M--;)
143    {
144        scanf("%d%d%d",&c,&a,&b),++a,++b;
145        if (c<2)    Draw(1,1,N,a,b,c);
146        else
147        if (c==2)    Inverse(1,1,N,a,b);
148        else
149        if (c==3)    printf("%d\n",Query(1,1,N,a,b).s[1]);
150        else    printf("%d\n",Query(1,1,N,a,b).m[1]);
151    }

152    return 0;
153}

154

posted on 2010-04-19 12:04 jsn1993 閱讀(351) 評論(0)  編輯 收藏 引用 所屬分類: Data Structures

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产亚洲综合在线| 久久久久国产免费免费| 久久aⅴ国产欧美74aaa| 亚洲一区二区三区免费视频| 中文一区在线| 亚洲一区免费| 午夜一区二区三区在线观看 | 欧美在线视频网站| 久久精品99国产精品酒店日本| 久久久久久自在自线| 久热精品视频在线| 亚洲人成高清| 99re6热只有精品免费观看| 在线亚洲电影| 久久久蜜桃精品| 欧美日韩在线播| 国内精品久久久| 一本一本大道香蕉久在线精品| 欧美一区二区三区免费在线看| 久久婷婷麻豆| 一区二区三区免费网站| 久久成人免费网| 欧美视频一区在线观看| 在线免费观看日韩欧美| 亚洲影院一区| 亚洲国产精品一区二区第一页| 亚洲一区国产一区| 欧美激情视频在线播放| 久久在线视频| 亚洲精品一区在线观看| 午夜视频精品| 欧美国产三级| 性欧美videos另类喷潮| 欧美日韩一区二区国产| 有码中文亚洲精品| 欧美一区二区在线视频| 亚洲欧洲在线一区| 久久久久久久国产| 国产日韩成人精品| 亚洲欧美激情一区| 亚洲理论电影网| 久久亚洲一区二区| 国产日韩一区二区三区在线| 亚洲图片在线观看| 亚洲精品视频在线| 欧美激情视频网站| 亚洲精品黄色| 亚洲国产成人精品女人久久久| 欧美综合国产精品久久丁香| 国产精品亚洲产品| 亚洲欧美视频在线| 99视频有精品| 欧美网站在线| 亚洲性感美女99在线| 亚洲美女一区| 欧美日韩视频在线第一区| 日韩视频在线一区二区| 亚洲国产第一页| 欧美黄色小视频| 亚洲美女在线国产| 亚洲日本中文| 欧美少妇一区| 亚洲在线观看| 亚洲欧美日韩一区二区| 国产伪娘ts一区| 久久香蕉国产线看观看网| 久久久九九九九| 亚洲激情视频在线观看| 亚洲国产一区视频| 欧美日韩激情小视频| 亚洲午夜精品国产| 午夜精品福利视频| 伊人久久综合| 亚洲精品一区久久久久久| 欧美色精品天天在线观看视频| 在线性视频日韩欧美| 亚洲影视中文字幕| 精品福利免费观看| 亚洲日本无吗高清不卡| 国产精品久久久久高潮| 久久欧美肥婆一二区| 老**午夜毛片一区二区三区| 日韩亚洲一区在线播放| 亚洲一区二区三区午夜| 精品91免费| 亚洲毛片在线| 国内成人精品视频| 亚洲精品久久久蜜桃| 国产九区一区在线| 久久蜜桃资源一区二区老牛| 亚洲综合色噜噜狠狠| 亚洲欧美国产77777| 亚洲高清在线播放| 亚洲调教视频在线观看| 揄拍成人国产精品视频| 亚洲乱码国产乱码精品精天堂 | 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲视屏一区| 91久久极品少妇xxxxⅹ软件| 亚洲深夜av| 亚洲精品国产精品乱码不99按摩 | 亚洲国产成人久久| 亚洲欧美日韩国产精品| 亚洲作爱视频| 久久天天躁狠狠躁夜夜av| 亚洲一区二区三区在线看| 久久久亚洲国产天美传媒修理工| 亚洲视频香蕉人妖| 欧美成年人视频网站| 久久久久久久精| 欧美天天影院| 亚洲精品视频在线观看网站| 国产综合色在线视频区| 中文精品99久久国产香蕉| 亚洲青涩在线| 久久综合中文| 久久女同互慰一区二区三区| 国产精品日韩欧美一区二区| 亚洲国产视频一区| 亚洲第一级黄色片| 久久激情视频| 久久精品国产免费观看| 国产精品久久影院| 9l视频自拍蝌蚪9l视频成人| 亚洲精品一二区| 欧美本精品男人aⅴ天堂| 欧美不卡一卡二卡免费版| 狠狠色狠狠色综合日日小说| 欧美在线短视频| 久久久久久网址| 激情丁香综合| 久久九九国产精品| 久久久精品欧美丰满| 国产视频在线观看一区| 亚洲欧美日本视频在线观看| 性欧美办公室18xxxxhd| 国产精品自拍视频| 午夜电影亚洲| 久久深夜福利| 亚洲国产精品va| 欧美大片网址| 日韩香蕉视频| 午夜亚洲性色福利视频| 国产日韩高清一区二区三区在线| 亚洲欧美日韩精品久久久久| 久久精品国产999大香线蕉| 国产一区二区日韩精品欧美精品 | 99精品欧美一区| 久久精品毛片| 久久久久久亚洲精品不卡4k岛国| 国产日韩欧美91| 欧美在线|欧美| 欧美aⅴ99久久黑人专区| 亚洲人成在线播放| 欧美日韩网站| 欧美一区二区三区视频免费| 久久天天躁夜夜躁狠狠躁2022 | 亚洲综合精品一区二区| 国产精品日韩欧美一区二区三区| 新狼窝色av性久久久久久| 欧美freesex8一10精品| 一本色道久久综合| 国产精品自拍小视频| 老司机午夜精品| 亚洲视屏一区| 欧美va亚洲va日韩∨a综合色| 在线一区亚洲| 黄色日韩网站| 欧美丝袜一区二区三区| 久久久久久9| 中文久久精品| 欧美成人免费网站| 午夜精品久久久久| 亚洲激情电影在线| 国产精品丝袜白浆摸在线| 美日韩精品视频| 亚洲伊人网站| 亚洲人成毛片在线播放| 久久久亚洲欧洲日产国码αv| 日韩一级成人av| 一区二区三区在线免费观看 | 麻豆精品传媒视频| 亚洲主播在线播放| 91久久久在线| 蜜臀av性久久久久蜜臀aⅴ| 亚洲一区二区三区影院| 亚洲国产精品嫩草影院| 国产女精品视频网站免费| 另类激情亚洲| 欧美在线观看一二区| 中日韩美女免费视频网址在线观看| 欧美va天堂| 久久久天天操| 欧美中文字幕精品| 亚洲欧美日韩电影| 国产精品99久久久久久久vr| 亚洲国产美国国产综合一区二区| 国产一区二区三区在线播放免费观看 | 欧美一区二区三区视频在线| 亚洲最新视频在线|