時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 32768k,其他語言65536k
64bit io format: %lld
n個桶按順序排列,我們用1~n給桶標號。有兩種操作:
1 l r c 區間[l,r]中的每個桶中都放入乙個顏色為c的球 (1≤l,r ≤n,l≤r,0≤c≤60)
2 l r 查詢區間[l,r]的桶中有多少種不同顏色的球 (1≤l,r ≤n,l≤r)
有多組資料,對於每組資料:第一行有兩個整數n,m(1≤n,m≤100000)
接下來m行,代表m個操作,格式如題目所示。
對於每個2號操作,輸出乙個整數,表示查詢的結果。示例1
10 101 1 2 0
1 3 4 1
2 1 4
1 5 6 2
2 1 6
1 7 8 1
2 3 8
1 8 10 3
2 1 10
2 3 8
232參加運算的兩個物件,按二進位制位進行「或」運算。43這題是線段樹裸題 ,用位運算處理很方便
運算規則:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :參加運算的兩個物件只要有乙個為1,其值為1。
#include #include#include
#include
#include
#include
using
namespace
std;
const
int maxn = 1e5 + 10
;typedef
long
long
ll ;
ll add[maxn
<< 2], sum[maxn << 2
];void
pushup(ll rt)
void
pushdown(ll rt)
}void
updata(ll x, ll y, ll z, ll l, ll r, ll rt)
pushdown(rt);
ll m = (l + r) >> 1
; updata(x, y, z, l, m, rt
<< 1
); updata(x, y, z, m + 1, r, rt << 1 | 1
); pushup(rt);
}ll query(ll x, ll y, ll l, ll r, ll rt )
ll getx(ll x)
return
ans;
}int
main()
else}}
return0;
}
(線段樹統計區間種類)
第14屆中北大學程式設計競賽來了,集訓隊新買了一大堆氣球,氣球一共有k種顏色 1 k 256 氣球的顏色從1 k編號。zbt童心未泯,他發明了一種擺放氣球的遊戲,規則如下。一排有n個桌子,每張桌子上只有乙個氣球插孔,即每張桌子最多只能放乙個氣球。編號分別為1 n 1 n 100000 每張桌子一開始...
洛谷 1110 報表統計 線段樹
題解 考慮離散化,利用兩顆線段樹來維護合適的資訊求解兩個詢問。min gap 求相鄰的差值絕對值最小。建立線段樹儲存差值的出現次數,詢問時求差值最小的那個即可。記位置i ii初始值為a i a i a i 新插入的值為b i b i b i 初始b i a i b i a i b i a i 當在位...
線段樹入門 P2068 統計和
題目描述 給定乙個長度為n n 100000 初始值都為0的序列,x x 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出y y 10000 個問題,求每段區間的和。時間限制1秒。輸入輸出格式 輸入格式 第一行1個數,表示序列的長度n 第二行1個數,表示操作的次數w 後面依次是w行,分...