CQOI 2006 線段樹之簡單題

2022-05-31 19:39:08 字數 1312 閱讀 4564

description

有乙個n個元素的陣列,每個元素初始均為0。有m條指令,要麼讓其中一段連續序列數字反轉--0變1,1變0(操作1),要麼詢問某個元素的值(操作2)。例如當n=20時,10條指令如下:

第一行包含兩個整數n,m,表示陣列的長度和指令的條數,以下m行,每行的第乙個數t表示操作的種類。若t=1,

則接下來有兩個數l, r (l<=r),表示區間[l, r]的每個數均反轉;若t=2,則接下來只有乙個數i,表示詢問的下

標。1<=n<=100,000,1<=m<=500,000

output

每個操作2輸出一行(非0即1),表示每次操作2的回答

sample input

20 10

1 1 10

2 62 12

1 5 12

2 62 15

1 6 16

1 11 17

2 12

2 6sample output10

0011

這題是個線段樹裸題,只需要維護乙個標記即可。0和1的轉變如何記錄?標記++就好,輸出答案只要\(\land\) 1 即可

#include#include#include#include#include#define inf 0x7f7f7f7f

using namespace std;

typedef long long ll;

typedef unsigned int ui;

typedef unsigned long long ull;

inline int read()

inline void print(int x)

const int n=1e5;

struct segment

void change(int p,int l,int r,int x,int y)

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

if (x<=mid) change(ls,l,mid,x,y);

if (y>mid) change(rs,mid+1,r,x,y);

} int query(int p,int l,int r,int x)

}t;int main()

return 0;

}

CQOI 2006 線段樹之簡單題

description 有乙個n個元素的陣列,每個元素初始均為0。有m條指令,要麼讓其中一段連續序列數字反轉 0變1,1變0 操作1 要麼詢問某個元素的值 操作2 例如當n 20時,10條指令如下 第一行包含兩個整數n,m,表示陣列的長度和指令的條數,以下m行,每行的第乙個數t表示操作的種類。若t ...

CQOI2006 簡單題 線段樹

水。區間修改,單點查詢。用線段樹維護區間 l,r 內的所有 1 的個數,懶標記表示為當前區間是否需要反轉 相對於區間當前狀態 下方標記時懶標記取反即可。include include define sl x 1 define sr x 1 1 define maxn 100010 using nam...

CQOI2006 簡單題(真tm簡單!)

題目 有乙個 n 個元素的陣列,每個元素初始均為 0 有 m 條指令,要麼讓其中一段連續序列數字反轉 0 變 1,1 變 0 操作1 要麼詢問某個元素的值 操作2 例如當 n 20 時,10 條指令如下 輸入格式 輸入檔案第一行包含兩個整數 n,m,表示陣列的長度和指令的條數,以下 m 行,每行的第...