線段樹,對(duì)于每個(gè)區(qū)間需要分別維護(hù)左右中的1和0連續(xù)個(gè)數(shù),并在op=4時(shí)特殊處理一下。
Description
lxhgww最近收到了一個(gè)01序列,序列里面包含了n個(gè)數(shù),這些數(shù)要么是0,要么是1,現(xiàn)在對(duì)于這個(gè)序列有五種變換操作和詢問操作: 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)總共有多少個(gè)1 4 a b 詢問[a, b]區(qū)間內(nèi)最多有多少個(gè)連續(xù)的1 對(duì)于每一種詢問操作,lxhgww都需要給出回答,聰明的程序員們,你們能幫助他嗎?
Input
輸入數(shù)據(jù)第一行包括2個(gè)數(shù),n和m,分別表示序列的長(zhǎng)度和操作數(shù)目 第二行包括n個(gè)數(shù),表示序列的初始狀態(tài) 接下來m行,每行3個(gè)數(shù),op, a, b,(0<=op<=4,0<=a<=b<n)表示對(duì)于區(qū)間[a, b]執(zhí)行標(biāo)號(hào)為op的操作="" <="" div="">
Output
對(duì)于每一個(gè)詢問操作,輸出一行,包括1個(gè)數(shù),表示其對(duì)應(yīng)的答案
Sample Input
10 10
0 0 0 1 1 0 1 0 1 1
1 0 2
3 0 5
2 2 2
4 0 4
0 3 6
2 3 7
4 2 8
1 0 5
0 5 6
3 3 9
Sample Output
5
2
6
5
HINT
對(duì)于30%的數(shù)據(jù),1<=n, m<=1000
對(duì)于100%的數(shù)據(jù),1<=n, m<=100000
Source