2017 5 12 校門外的區間 思考記錄

2021-07-31 23:55:05 字數 1521 閱讀 3335

這題很裸,只要維護單點1,0就行了、、

不同運算表示  :

u  : 全1

d  : 全0

i  : 以外全0

c  : 取反,以外取0

s  :取反

線段樹標記記得下傳時當前點標記清零 ,然後就沒了

犯的錯誤:   1、 標記忘清零、

2、 小數時的括號 

3、特判!!!0!!! 0!!!!0 !!!!

碼:

#include#includeusing namespace std;

#define zuo l,mid,o<<1

#define you mid+1,r,o<<1|1

#define n 131075 

int quan1[n<<2],quan0[n<<2],rev[n<<2],a,b,op,la,lb,i,lin; 

char ch,zkh,ykh,douhao;

bool yes,lianxu,jieshu,yici=1;

void down(int o)

if(quan1[o]==1)

if(rev[o]==1)

rev[o]=0;

quan0[o]=0;

quan1[o]=0;

}void gai(int l,int r,int o)

if(op==2)

if(op==3)

if(l!=r)down(o);

return;

}int mid=(l+r)>>1;

if(a<=mid)gai(zuo);

if(b>=mid+1)gai(you);

}void zhao(int l,int r,int o) 

int mid=(l+r)>>1;

if(a<=mid)zhao(zuo);

if(a>=mid+1)zhao(you);

}int main()

if(jieshu)break;

scanf("%c",&zkh);scanf("%c",&zkh);

scanf("%d",&a);

scanf("%c",&douhao);

scanf("%d",&b);

scanf("%c",&ykh);

a*=2;

b*=2;

if(zkh=='(')a++;

if(ykh==')')b--;

if(ch=='u')

if(ch=='i')

if(ch=='d')

if(ch=='c')

if(ch=='s')

}for(i=0;i<=131071;i++)

if(lianxu==0)

}else if(!yici)printf(" [%d,",a/2);

else

}    }else

if(lianxu==1)

else  printf("%d)",a/2);}}

}if(yes==0)

}

校門外的樹 區間包含

某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止...

SDOI2008校門外的區間

這道題作為前天的模擬賽題,考場上我在還剩乙個半小時的情況下居然選擇求穩打暴力,水過了40分,然後就坐看cansult和refun這倆dalaoak.一開始我的想法是,把區間看成兩點之間不包含端點的小區間和端點構成的集合,然後分開處理,這個做法可能暴力還是可以的,然而如果要用線段樹的話,就要開兩顆線段...

校門外的樹

描述 某校大門外長度為 l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸 0的位置,另一端在 l的位置 數軸上的每個整數點,即0,1,2 l,都種有一棵樹。馬路上有一些區域要用來建地鐵,這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起...