題目
有乙個 n 個元素的陣列,每個元素初始均為 0 。有 m 條指令,要麼讓其中一段連續序列數字反轉——0 變 1,1 變 0(操作1),要麼詢問某個元素的值(操作2)。例如當 n=20 時,10 條指令如下:真的是很簡單的乙個線段樹,區間加1和單點查詢值%2就好了,,,,輸入格式
輸入檔案第一行包含兩個整數 n,m,表示陣列的長度和指令的條數,以下 m 行,每行的第乙個數 t 表示操作的種類。若 t=1,則接下來有兩個數 l, r (l<=r),表示區間 [l, r] 的每個數均反轉;若 t=2,則接下來只有乙個數 i,表示詢問的下標。
輸出格式
每個操作 2 輸出一行(非0即1),表示每次操作 2 的回答。
樣例資料 1
輸入
20 10
1 1 10
2 6
2 12
1 5 12
2 6
2 15
1 6 16
1 11 17
2 12
2 6
輸出 1
0 0
0 1
1 備註
【資料範圍】
50% 的資料滿足:1≤n≤1,000,1≤m≤10,000
也可以直接異或1
結果小細節寫掛了,找了半天。。
#include
#define lc u<<1
#define rc (u<<1)+1
using
namespace
std;
int mark[400020],a[100005],m,n,t,l,r;
inline
int read()
inline
void pushdown(int u)
inline
void change(int u,int l,int r,int st,int des)
int mid=(st+des)/2;
if(mid>=r)
change(lc,l,r,st,mid);
else
if(mid1,des);
else
}inline
int find(int u,int num,int st,int des)
int main()
else}}
CQOI2006 簡單題 線段樹
水。區間修改,單點查詢。用線段樹維護區間 l,r 內的所有 1 的個數,懶標記表示為當前區間是否需要反轉 相對於區間當前狀態 下方標記時懶標記取反即可。include include define sl x 1 define sr x 1 1 define maxn 100010 using nam...
CQOI 2006 線段樹之簡單題
description 有乙個n個元素的陣列,每個元素初始均為0。有m條指令,要麼讓其中一段連續序列數字反轉 0變1,1變0 操作1 要麼詢問某個元素的值 操作2 例如當n 20時,10條指令如下 第一行包含兩個整數n,m,表示陣列的長度和指令的條數,以下m行,每行的第乙個數t表示操作的種類。若t ...
CQOI 2006 線段樹之簡單題
description 有乙個n個元素的陣列,每個元素初始均為0。有m條指令,要麼讓其中一段連續序列數字反轉 0變1,1變0 操作1 要麼詢問某個元素的值 操作2 例如當n 20時,10條指令如下 第一行包含兩個整數n,m,表示陣列的長度和指令的條數,以下m行,每行的第乙個數t表示操作的種類。若t ...