题目链接
【题解】:
由于这个1e8的数字最多只能开根号6次,复杂度就是O(6*n)
直接进行开根号到叶子节点,然后不断更新。复杂度并不高,但是注意的是,如果当前节点已经是1或者0那么就不要处理了,在更新的过程中多加一个判断修改一下这个题目就可以AC了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+10;
ll tree[N<<2],a[N];
int f[N<<2],n,m;
void pushup(int No){
tree[No] = tree[No<<1] + tree[No<<1|1];
f[No] = f[No<<1] & f[No<<1|1];
}
void Build(int No,int L,int R){
if( L==R ){
tree[No] = a[L];
if( a[L]