分块

P3372 【模板】线段树 1

复杂度不对吧......
by t162 @ 2020-03-18 17:15:44


你应该写假了,对整块操作不用再便利每一个点了,直接块上做就行 @[dico](/user/178515)
by Lice @ 2020-03-18 17:26:22


@[_Wallace_](/user/61430) (可能没说清楚),我的意思是为什么 WA 了。
by dico @ 2020-03-18 17:58:36


@[dico](/user/178515) 。。。说实话这错的好像真有点多 QAQ 如果初学分块,建议用这种写法: ```cpp function solve(a,b,...) { if(b所属块编号 - a所属块编号 <= 1)/*即没有整块的*/ {/*暴力计算,结束*/} /*那么现在就是有整块的情况了*/ for(i:[a,a所属块的右边界]) /*暴力处理*/ for(i:[b所属块的左边界,b]) /*暴力处理*/ for(i:[a所属块编号+1,b所属块编号-1]) /*直接在块上做*/ } ```
by Lice @ 2020-03-18 18:29:13


tools ```cpp /*B:=块长*/ #define lb(x) ((x-1)*B+1) //左边界 #define ub(x) (min(x*B,n))//右边界 #define bl(x) ((x-1)/B+1) //所属块 ```
by Lice @ 2020-03-18 18:30:05


|