3038 上帝造題的七分鐘2 線段樹 剪枝

2021-07-09 07:39:33 字數 888 閱讀 3368

一維的區間修改+區間查詢,顯然可以用線段樹來做。

裸的線段樹會超時,因為每次開方都要遞迴到底……(開始將開方的和寫成了和的開方qaq)

剪枝就是對於乙個數如果是1或0,那麼之後無需再對其進行操作,因為開方不會影響這個數值。

#include

#define n 400005

#define ll long long

using namespace std;

int n,m;

int l[n],r[n];

ll sum[n],a[n>>2];

bool flag[n];

inline ll read()

while (c>='0'&&c<='9')

return a*f;

}inline void pushup(int k)

void build(int k,int x,int y)

int mid=l[k]+r[k]>>1;

build(k<<1,x,mid); build(k<<1|1,mid+1,y);

pushup(k);

}void change(int k,int x,int y)

int mid=l[k]+r[k]>>1;

if (y<=mid) change(k<<1,x,y);

else

if (x>mid) change(k<<1|1,x,y);

else change(k<<1,x,mid),change(k<<1|1,mid+1,y);

pushup(k);

}ll query(int k,int x,int y)

int main()

return

0;}

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...