2276: 树状的灯
Memory Limit:128 MB
Time Limit:1 S
Judge Style:Text Compare
Creator:
Submit:147
Solved:50
Description
校园里有一个古老的树,树上挂着n盏灯。这些灯围成了树的形状,很好看。现在,这n盏灯,有的的开着的,有的是关着的。开着用1来表示,关着用0来表示。当这些灯形成一个完美组合时,会非常非常好看。为了让这个树状的灯形成完美组合,小明打算对这些灯进行m个操作。小明可以对这些灯中的某些连续的灯进行关灯、开灯或者取反(开的灯关;关的灯开)操作,也可以数一下有多少盏灯是开着的,多少盏灯是关着的。请把数灯的结果输出来。
Input
第一行:输入一个正整数n和一个正整数m
第二行:一个只含有0和1的长度为n的字符串,表示编号为1到n的灯的状态
接下来m行,每行有1个数o或者3个数o,a,b,如果o是0,代表数一下有多少个关着的灯;如果o是1,代表数一下有多少个开着的灯;如果o是2,代表将编号为a到b的灯(含a和b)进行取反操作;如果o是3,代表将编号为a到b的灯(含a和b)进行开灯操作;如果o是4,代表将编号为a到b的灯(含a和b)进行关灯操作。
Output
对于数灯的操作结果,各输出一行。
Sample Input Copy
5 5
00111
1
2 2 3
3 1 1
4 2 5
0
Sample Output Copy
3
4
HINT
第一个操作:数开着的灯,共3个(3,4,5),输出3;
第二个操作:将第2-3之间的灯全部取反,得到01011
第三个操作:将第1-1之间的灯全部开灯,得到11011
第四个操作:将第4-5之间的灯全部关灯,得到10000
第五个操作:数关着的灯,共4个(2,3,4,5),输出4。
【数据范围】
50%的数据:n < 32,m < 100000
100%的数据:n < 64,m <= 1000000