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 行,每行的第...