求樹上一段連續編號的子樹大小的和,帶修改。
分塊。
預處理乙個東西g[
x][i
] 表示x這個點對i這個塊的影響。
然後就可以暴力搞了。
對於零散的點,就用樹狀陣列維護dfs序的區間和。
貌似是nn√
logn
的,不過就是能過。
還有以後打**盡量注意,少遞迴,少遞迴,少遞迴!
最後要用un
sign
edlo
nglo
ngcode:
#include
#include
#include
#include
#include
#define ll unsigned long long
using namespace std;
struct nodea[200010];int len=0,last[100010];
int pre[100010],n,m,g[100010][350],d[100010],rt;
int ys[100010],z=0,la[100010],ri[350];
ll tr[100010],f[350];
intread()
while(ch>='0'&&ch<='9')
return
x*f;
}void ins(int
x,int
y)int lowbit(int
x)void change(int
x,int k)
ll get(int
x)void dfs(int
x,int fa)
}int main()
int len=sqrt(n);
for(int i=1;i<=n;i++)
//for(int i=1;i<=pre[n];i++) dfs(rt,0,i,0);
dfs(rt,0);
for(int i=1;i<=n;i++)
ri[pre[n]]=n;
while(m--)
else
printf("%llu\n",ans);}}
}
BZOJ 4765 普通計算姬
bzoj 4765 普通計算姬 分塊 奮戰三星期,造台計算機 小g響應號召,花了三小時造了臺普通計算姬。普通計算姬比普通計算機要厲害一些 普通計算機能計算數列區間和,而普通計算姬能計算樹中子樹和。更具體地,小g的計算姬可以解決這麼個問題 給定一棵n個節點的帶權樹,節點編號為1到n,以root為根,設...
BZOJ4765 普通計算姬
bzoj4765 普通計算姬 試題描述 奮戰三星期,造台計算機 小g響應號召,花了三小時造了臺普通計算姬。普通計算姬比普通計算機要厲害一些。普通計算機能計算數列區間和,而普通計算姬能計算樹中子樹和。更具體地,小g的計算姬可以解決這麼個問題 給定一棵n個節點的帶權樹,節點編號為1到n,以root為根,...
bzoj4765 普通計算姬
給定一棵 n 個節點的帶權樹,節點編號為 1 n 以 root 為根,設 sum p 表示以點 p 為根的這棵子樹中所有節點的權值和。支援下列兩種操作 1.給定兩個整數 u,v 修改點 u 的權值為 v 2.給定兩個整數 l,r 計算 sum sum 第一行兩個整數 n,m 表示樹的節點數與操作次數...