日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树状数组1

發布時間:2024/9/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树状数组1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1156: 新年彩燈Ⅰ
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 572 Solved: 83
[Submit][Status][Web Board]
Description

新年將至,YY準備掛一排彩燈,已知彩燈剛掛完的彩燈共有N盞(編號為1,2,3,……),并且都是滅的。彩燈的閃爍由一段程序控制。

每一秒鐘程序會生成兩個正整數a和b(1<=a,b<=N),然后將編號為a和b之間的所有燈的狀態改變一次,即如果燈i是滅的,那么經過一次改變,燈i會亮,如果燈i是亮的,經過一次改變,燈i會滅。

當YY看著自己掛的彩燈不斷閃爍的時候,問題來了,YY想知道任意時刻某一區間燈的狀態。

Input

多組測試數據,每一組第一行是一個整數N(1<=N<=1000000)和一個整數M(1<=M<=3000)。

然后是M行數據,包括以下兩種形式:

1 a b 表示燈a和燈b之間的燈(含燈a和燈b)變換一次狀態。

0 x y 表示YY想知道此刻燈x到燈y(包含燈x和燈y)的狀態.

Output

對于每次YY想知道結果的時候,輸出一行燈的狀態(編號小的燈優先),如果是亮的輸出”1”,否則輸出”0”;

Sample Input

3 3
1 1 2
1 2 3
0 1 3

Sample Output

101

//做這題開始也是做出時間超限的,研究了好久自己才用樹狀數組寫出來
附上提供學習的大佬鏈接:
1:https://blog.csdn.net/Small_Orange_glory/article/details/81290634
2:https://blog.csdn.net/rentenglong2012/article/details/69230308
3:https://blog.csdn.net/rnzhiw/article/details/81275375
下面是AC代碼了~:

#include <stdio.h> #include <iostream> using namespace std; int c[1000005]; int n,m; //找x的二進制從右——>左第一個1的位置(0開始算) int lowbit(int x) {return x&-x; } //前y項求和 int SUM(int y) {int sum = 0;for(int i = y; i > 0; i-=lowbit(i))sum += c[i];return sum; } //單點更新,k為更新的值,n為數據范圍 void update_point(int begin_c,int k) {for(int i = begin_c; i <= n; i+=lowbit(i))c[i] += k; } /* [a,b]區間更新,根據差分法只需要對c[a],c[b+1]更新 c[a] += k; c[b+1] -= k; */ void update_range(int a,int b,int k) {update_point(a,k);update_point(b+1,-k); } int main() {while(~scanf("%d%d",&n,&m)){fill(c,c+n+1,0);int x,y,z,a,b;for(int i = 0; i < m; i++){scanf("%d%d%d",&x,&y,&z);y < z ? (a = y,b = z):(a = z,b = y);if(x){update_range(a,b,1);}else{//SUM(i)奇數為1,偶數為0for(int i = a; i <= b; i++){if(SUM(i) % 2 == 1)printf("1");elseprintf("0");}printf("\n");}}}return 0; }

總結

以上是生活随笔為你收集整理的树状数组1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。