本來是打算作為樹剖練習的最後一題的,結果一直wa。
本來以為是自己寫的太醜。
最後發現5w的資料
我開了10w的陣列
然而有乙個陣列要×2
哦,好棒棒。
1 #include2 #include3 #include4 #include5#define foru(i,x,y) for(ll i=x;i<=y;i++)
6using
namespace
std;
7 typedef int
ll;8
const ll n=2e5;
9const ll mod=201314;10
struct edgee[2*n];
11struct nodet[10*n];
12struct
quea[n];
13ll f[n],b[n],d[n],id[n],ans[n],siz[n],son[n],top[n],head[n],
14cnt,ne,n,m,nq,q[n];
1516
bool cmp(que a,que b)
1718
void
add(ll a,ll b);head[a]=ne;20}
2122
void
dfs(ll k,ll fa,ll dep)31}
3233
void
build(ll k,ll tp)40}
4142
#define mid ((l+r)>>1)
43#define ls (k<<1)
44#define rs ls+1
4546
void
pd(ll k,ll l,ll r)
5253
void
pu(ll k,ll l,ll r)
5758
void
update(ll k,ll l,ll r,ll l,ll r,ll x)
62 update(ls,l,mid,l,r,x); update(rs,mid+1
,r,l,r,x);
63 pd(ls,l,mid);pd(rs,mid+1
,r);
64pu(k,l,r);65}
6667
ll qur(ll k,ll l,ll r,ll l,ll r)
7374 ll get
(ll x)
81return
ret;82}
8384
void
change(ll x)89}
90int
main()
97 foru(i,1
,m)102 dfs(1,0,1
);103 build(1,1
);104 sort(a+1,a+1+nq,cmp);
105 ll j=0
;106
while(!a[j+1].p)j++;
107 foru(i,1
,n)111 foru(i,1,m)printf("
%d\n
",(ans[i]+mod)%mod);
112return0;
113 }
bzoj 3626 神思維 鏈剖 線段樹
emmmm這道題的思路實在是神。雖然做過然而做過一遍還是做不出來。本來還想到了另外一種思路。不過寫完調來調去發現這個思路完全是錯的qaq要是這樣把隊友坑了那怎麼行qaq 繼續貼清華爺gconeice的題解。顯然,暴力求解的複雜度是無法承受的。考慮這樣的一種暴力,我們把 z 到根上的點全部打標記,對於...
BZOJ 3626 離線 樹鏈剖分 線段樹
思路 抄一波yousiki的 顯然,暴力求解的複雜度是無法承受的。考慮這樣的一種暴力,我們把 z 到根上的點全部打標記,對於 l 到 r 之間的點,向上搜尋到第乙個有標記的點求出它的深度統計答案。觀察到,深度其實就是上面有幾個已標記了的點 包括自身 所以,我們不妨把 z 到根的路徑上的點全部 1,對...
bzoj 3626 LCA(樹鏈剖分)
傳送門biu 考慮求lca x,y 的深度,可以把 x 到根路徑上的所有節點權值加一,再查詢 y到根路徑上的所有節點的權值和即為lc a x,y 的深度。將詢問離線,把詢問 r i ld eplc a i,z 拆成兩個詢問 r i 1d eplc a i,z 減去 l 1i 1dep lca i,z...