线段树.. --------------------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; ++i ) #define clr(…
这道题需要支持区间修改和区间询问,因此采用线段树加以维护. 由于求的是开着的灯的数目,因此维护sum:区间[ l , r ]中开着的灯的数目. tag取做0/1,表示区间是否反转,在进行标记下传时,如果tag=1,则下传,否则返回.(tag的选取一般跟操作有关) 代码如下: #include <bits/stdc++.h> using namespace std; const int maxn=1e5+10; int n,m; struct node{ #define lson t[k].lc…