30分树剖求调

P3384 【模板】重链剖分/树链剖分

hack: ``` 3 2 1 10000000 0 0 0 1 2 2 3 3 1 4 4 2 ``` 答案是8,你输出12
by guosoun @ 2022-04-23 11:59:00


@[2019gzy](/user/238310) 诶诶诶诶诶??难道子树加不需要加根节点嘛????
by FiresonZ @ 2022-04-24 08:25:21


您多半是线段树挂了: ```cpp n=3; build3(1,n,1); update_need(1, n, 4, 1, 3, 1);//在1-3加4 cout<<checksum(1, n, 2, 3, 1);//查询2-3的和 ``` 在main函数里执行这些,您输出12
by guosoun @ 2022-04-24 12:29:36


已切; 区间查询标记下传时,两个儿子需要乘`(mid-l+1)`和`r-mid`,您写的是`(mid-ll+1)`和`rr-mid` 附区间查询正确标记下传的代码 ```cpp if(flag1[p]) { tree[p*2]+=flag1[p]*(mid-l+1); tree[p*2]%=mod; tree[p*2+1]+=flag1[p]*(r-mid); tree[p*2+1]%=mod; flag1[p*2]+=flag1[p]; flag1[p*2+1]+=flag1[p]; flag1[p]=0; } ```
by guosoun @ 2022-04-24 12:38:45


|