标签:oid ret include bsp close gif 分享 pen pre
#include<bits/stdc++.h> using namespace std; #define ll long long ll sum[500000]; ll n,p,ans; ll ql,qr,v; void mk(ll o,ll l,ll r){ if(ql<=l&&qr>=r)sum[o]=1<<(v-1); else{ ll m=l+(r-l)/2; if(m>=ql)mk(o*2,l,m); if(m<qr)mk(o*2+1,m+1,r); sum[o]=sum[o*2]|sum[o*2+1]; } } void qz(ll o,ll l,ll r){ if(l>=ql&&qr>=r)ans=ans|sum[o]; else { ll m=(r-l)/2; if(ql<=m)qz(o*2,l,m); if(qr>m)qz(o*2+1,m+1,r); } } int main(){ cin>>n>>p>>p; for(int i=1;i<=p;i++){ char c; cin>>c; if(c==‘P‘){ cin>>ql>>qr; qz(1,1,n) } } return 0; }
[l,r]的颜色个数用30位二进制数表示。
线段树支持区间修改。
sum[o]=sum[o*2] or sum[o*2+1]
标签:oid ret include bsp close gif 分享 pen pre
原文地址:https://www.cnblogs.com/lxzl/p/9737438.html