bzoj3038 上帝造題的七分鐘2

2022-05-11 06:36:43 字數 1761 閱讀 7761

題目鏈結

線段樹裸題,但是由於是開平方根,所以只能暴力單點修改

但是,光這麼做會t,當單點值為0或1是就不會變了。

於是可以給區間打上標記,有標記就不遞迴下去修改了。ac

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define rre(i,r,l) for(int i=(r);i>=(l);i--)

#define re(i,l,r) for(int i=(l);i<=(r);i++)

#define clear(a,b) memset(a,b,sizeof(a))

#define inout(x) printf("%d",(x))

#define douin(x) scanf("%lf",&x)

#define strin(x) scanf("%s",(x))

#define llin(x) scanf("%lld",&x)

#define op operator

#define csc maintypedef unsigned

long

long

ull;

typedef

const

intcint;

typedef

long

long

ll;using

namespace

std;

void inin(int &ret)

while(ch>='

0'&&ch<='

9')ret*=10,ret+=ch-'

0',ch=getchar();

ret=f?-ret:ret;

}ll sum[

400010

];int l[400010],n,m,r[400010],bo[400040

];ll a[

100010

];void build(int k,int ll,int

rr)

int mid=(ll+rr)>>1

; build(k

<<1

,ll,mid);

build(k

<<1|1,mid+1

,rr);

sum[k]=sum[k<<1]+sum[k<<1|1],bo[k]=bo[k<<1]&bo[k<<1|1];}

ll query(

int k,int ll,int

rr)void change(int k,int ll,int

rr)

int mid=(l[k]+r[k])>>1

;

if(rr<=mid)change(k<<1

,ll,rr);

else

if(ll>mid)change(k<<1|1

,ll,rr);

else change(k<<1,ll,rr),change(k<<1|1

,ll,rr);

sum[k]=sum[k<<1]+sum[k<<1|1],bo[k]=bo[k<<1]&bo[k<<1|1];}

intcsc()

return0;

}

bzoj 3038 上帝造題的七分鐘2

time limit 3 sec memory limit 128 mb submit 923 solved 413 submit status discuss xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於...

BZOJ 3038 上帝造題的七分鐘2

description xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。第四分鐘,彩虹喵說,要是noip...

bzoj3038 上帝造題的七分鐘2

description xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。第四分鐘,彩虹喵說,要是noip...