【樹狀陣列】【CQOI2006】簡單題
【題目描述】
有一個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,表示詢問的下標。
【輸出格式】
每個操作2輸出一行(非0即1),表示每次操作2的回答
【樣例輸入】
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
100%的資料滿足:1<=n<=100,000,1<=m<=500,000
水題,無需線段樹,樹狀陣列即可。
#include<iostream> #include<iomanip> #include<cstdio> #include<queue> #include<cstring> #include<algorithm> #include<cmath> #include<map> using namespace std; int tree[400005],n,m; int lowbit(int k) { return k&-k; } int sum(int x) { int ans=0; while(x>0) { ans+=tree[x]; x-=lowbit(x); } return ans; } void add(int x,int k) { while(x<=n) { tree[x]+=k; x+=lowbit(x); } } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int t; scanf("%d",&t); if(t==1) { int x,y; scanf("%d%d",&x,&y); add(x,1); add(y+1,-1); } else { int x; scanf("%d",&x); printf("%d\n",sum(x)%2); } } }
相關推薦
【樹狀陣列】【CQOI2006】簡單題
【題目描述】 有一個n個元素的陣列,每個元素初始均為0。有m條指令,要麼讓其中一段連續序列數字反轉——0變1,1變0(操作1),要麼詢問某個元素的值(操作2)。例如當n=20時,10條指令如下: 【輸入格式】 第一行包含兩個整數n,m
【11.2校內測試】【狀壓】【矩陣字首和】【樹狀陣列逆序對(題意轉換)】
Solution 簽到水題,直接狀壓列舉所有情況算出答案即可。 Code #include<bits/stdc++.h> #define LL long long using namespace std; inline LL read() { LL x =
【區間偶數異或和】【好題】【離線】【樹狀陣列】【字首和】【前驅思想】
【連結】 http://hznu.club/OJ/problem.php?cid=1227&pid=2 【題意】 求區間出現偶數次的數的異或和 【思路】 首先,沒有修改,可以離線查詢,減少複雜度。 其次,我們容易知道的是:區間出現奇數次的數的異或和,即為區間異或和。
【動態主席樹】ZOJ 2112【樹狀陣列+主席樹】
題意: 給定一個區間,求這個區間第k小的數,支援單點修改。 思路: 動態主席樹裸題。 我們先來回顧一下靜態主席樹的做法,對於陣列中每一個位置
DNA Evolution 【CodeForces - 828E(827C)】【樹狀陣列】
題目連結 很難的一道題吧,算是挺難了,就是想到挺複雜,作為我這麼個Ju蒻來說。 題目給你一串字串,是初始的字串,然後告訴你一系列操作,問你: (一)、改變點Xi上的字元; (二)、查詢【l,r】區間上的對應與新給的字串匹配的個數是幾個?例如“ACGTC
codeforce828E. DNA Evolution【樹狀陣列統計貢獻】
文章目錄 題目連結: 題目連結: http://codeforces.com/problemset/problem/828/E 題意:先給一個DNA序列,然後有兩種操作 操作1:把 x 位置的鹼基改成 c 操作2:給一個 L 和一個 R ,以及
BZOJ3155/LNSYOJ96 preprefix【樹狀陣列x2】【做題報告】
這道題是樹狀陣列+數學題,然而我數學並不好 題目描述 對於一個長度為nn的序列a1,a2,a3……ana1,a2,a3……an,其字首和(Prefix Sum)SiSi為前ii個元素的和,即∑k=1iai∑k=1iai。而字首和的字首和(Preprefix Sum)就是把字首和序列S1,S2,S3……Sn
LNSYOJ203最大值【樹狀陣列應用】【做題報告+樹狀陣列深刻理解】
這道題是一個典型的樹狀陣列查詢有幾個比某個數大/小的數的應用 題目描述 給定NN個區間,選定一個固定整數值TT,對於一個區間[ai,bi][ai,bi]. 如果T<aiT<ai,那麼T在這個區間的得分為X, 如果T>biT>bi,那麼T在這個區間的得分為Z, 如果ai≤
REQ 【CodeForces - 594D】【樹狀陣列+離線查詢+區間思維】
題目連結 很好的一道題,昨晚上推的,今天由於程式碼能力太弱敲了半天,再不斷的找到自己思維的BUG,於是RE了一發、T了一發、WA了一發,就Ac了,還不錯,那我們來講解一下題目的思路。 我們知道對於一個值的尤拉函式值,就是它的值去乘上它所有的質數-1除以質數:如
歷屆試題 小朋友排隊【樹狀陣列】
歷屆試題 小朋友排隊 時間限制:1.0s 記憶體限制:256.0MB 問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。 每個小朋友都有一個不高興的程度。開始的時候,所有小朋友的不高興程度
CHOJ 4201 樓蘭圖騰【樹狀陣列】
描述 在完成了分配任務之後,西部314來到了樓蘭古城的西部。相傳很久以前這片土地上(比樓蘭古城還早)生活著兩個部落,一個部落崇拜尖刀(‘V’),一個部落崇拜鐵鍬(‘∧’),他們分別用V和∧的形狀來代表各自部落的圖騰。 西部314在樓蘭古城的下面發現了一幅巨大的壁畫,壁畫上被
2016 大連區域賽 現場賽 E—Aninteresting game【樹狀陣列】
Aninteresting game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 120 Acce
BZOJ P1103 「POI2007」大都市meg【dfs序】【樹狀陣列+差分】
#include <queue> #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include &
hdu 1166 敵兵佈陣【單點更新 區間查詢】【樹狀陣列】
敵兵佈陣 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 126415 Accepted Submissi
1082 線段樹練習 3【區間更新 區間查詢】【樹狀陣列】
題目描述 Description 給你N個數,有兩種操作: 1:給區間[a,b]的所有數增加X 2:詢問區間[a,b]的數的和。 輸入描述 Input Description 第一行一個正整數n,接下來n行n個整數, 再接下來一個正整數Q,每行表示操作的個數,
HDU 5592 ZYB's Game 【樹狀陣列】+【二分】
<題目連結> 題目大意: 給你一個由1~n,n個數組成的序列,給出他們每個的字首逆序數,現在要求輸出這個序列。 解題分析: 由字首逆序數很容易能夠得到每個數的逆序數。假設當前數是i,它前面比它小的數為a[i]( i - 1 - i的逆序數即可),我們不難知道,i在前i個數中是第i+1大的。
修改序列【樹狀陣列區修單查模板】
傳送門:http://oi.cdshishi.net:8000/problempage.php?problem_id=2138 水題++上程式碼 #include<bits/stdc++.h> #define in read() using namespace std; in
清點人數【樹狀陣列單修字首和模板】
題目傳送門:http://oi.cdshishi.net:8000/problempage.php?problem_id=3860 太水了,,,比模板還水,,模板好歹要帶一個r-(l-1),這個直接查字首和,,太水了 #include<bits/stdc++.h> #defi
最大數【JSOI2008】【樹狀陣列】
傳送門:https://www.luogu.org/problemnew/show/P1198 一道變式樹狀陣列 區別是從末尾開始建點 其他操作沒有變 差不多就是這樣,,很水的一道題 上程式碼 #include<bits/stdc++.h> #define i
hdu 1556 Color the ball 【樹狀陣列】
Time limit 3000 ms Memory limit 32768 kB OS Windows Source N個氣球排成一排,從左到右依次編號為1,2,3....N.每次給定2個整數a b(a <= b),lele便為騎上他的“小飛鴿"牌