一維的區間修改+區間查詢,顯然可以用線段樹來做。
裸的線段樹會超時,因為每次開方都要遞迴到底……(開始將開方的和寫成了和的開方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...