進行**實際上相當於用1覆蓋一段區間,這段區間內原有的1的個數加上挖出來的1的個數等於這段區間的長度,並且這段區間的長度最長為**的區間長度
知道了一段區間的長度,區間裡有多少1,還剩多少腦組織,就能知道這段區間是否被完全覆蓋
需要判斷是否還剩腦組織,如果沒了就返回,要不然複雜度不對
複雜度 o(m log n)
#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define maxn 200010
#define maxm 1010
#define ll long long
#define inf 1000000000
#define mod 1000000007
#define eps 1e-8
int n,m;
int s[maxn<<2],mx[maxn<<2],mxl[maxn<<2],mxr[maxn<<2],ch[maxn<<2],s0[maxn<<2];
int mx,mxr;
int v;
inline void ud(int x,int y,int z)
if(s0[x<<1|1]==z-mid)
}inline void toch(int x,int y,int z,int cv)
inline void pd(int x,int y,int z)
}void build(int x,int y,int z)
int mid=y+z>>1;
build(x<<1,y,mid);
build(x<<1|1,mid+1,z);
ud(x,y,z);
}void change(int x,int y,int z,int l,int r,int cv)
pd(x,y,z);
int mid=y+z>>1;
if(r<=mid)else if(l>mid)else
ud(x,y,z);
}int ask(int x,int y,int z,int l,int r)
pd(x,y,z);
int mid=y+z>>1;
if(r<=mid)else if(l>mid)else
ud(x,y,z);
}void toask(int x,int y,int z,int l,int r)else
return ;
} pd(x,y,z);
int mid=y+z>>1;
if(r<=mid)else if(l>mid)else
ud(x,y,z);
}void dang(int x,int y,int z)
return ;
} pd(x,y,z);
int mid=y+z>>1;
if(v+s[x]>=z-y+1)else
} ud(x,y,z);
}void guang(int x,int y,int z,int l,int r)
if(y==l&&z==r)
return ;
} pd(x,y,z);
int mid=y+z>>1;
if(r<=mid)else if(l>mid)else
} ud(x,y,z);
}int main()
if(o==1)
if(o==2)
} return 0;}/*
10 10
0 2 2
0 4 6
0 10 10
2 1 10
1 8 10 1 4
2 1 10
1 1 4 8 10
2 1 10
1 7 10 1 6
2 1 10
*/
BZOJ4592 Shoi2015 腦洞治療儀
bzoj4592 吐槽一下ds y 我 這個資料 了一天我xx x!一開始看到這個題。誒,區間連續最大和誒!把腦洞的值為1,正常的賦為 i nf但是操作1怎麼辦。發現就是先統計出l0 到r0 區間內 i nf的個數to t 然後區間賦為1.然後統計l1 到r1 區間內1的個數to t 如果to t ...
BZOJ 4592 Shoi2015 腦洞治療儀
4592 shoi 2015 腦 洞治療儀 4592 shoi2015 腦洞 儀 4592 shoi 2015 腦洞治 療儀description 曾經發明了自動刷題機的發明家shtsc又公開了他的新發明 腦洞 儀 一種可以 他因為發明而日益增大的腦洞的神秘裝置。為了簡單起見,我們將大腦視作乙個01...
BZOJ4592 Shoi2015 腦洞治療儀
bzoj4592 shoi2015 腦洞 儀 曾經發明了自動刷題機的發明家shtsc又公開了他的新發明 腦洞 儀 一種可以 他因為發明而日益增大的腦洞的神秘裝置。為了簡單起見,我們將大腦視作乙個01序列。1代表這個位置的腦組織正常工作,0代表這是一塊腦洞。腦洞 儀修補某一塊腦洞的基本工作原理就是將另...