分块
文章平均质量分 75
broxin
这个作者很懒,什么都没留下…
展开
-
CodeChef FNCS(分块)
分成根号n块,每一块上记录每个点在这一块出现了多少次,以及这个块当中当前f函数的和。这一部分可以用n*sqrt(n)的时空复杂度求出来。修改的时候扫描每一个块,对每个块可以O(1)求出这次修改后这个块的和。回答询问的时候,对于整块中的和,直接读块中的信息,对于剩下的部分暴力即可。 注意暴力求一个点的f值需要维护一个动态前缀和,即sum(r[i])-sum(l[i]-1)。这道题上面修改的数量和查原创 2016-05-26 20:55:54 · 835 阅读 · 0 评论 -
[BZOJ2122]工作评估(分块)
题意:给序列D和L。假设有一个初始价值x0,则经历第i天后价值变为min(x0+D[i],L[i]),记F(i,j,x0)表示以初始代价x0依次经过第i天到第j天后的价值。每次询问给出l,r,x0,求max(F(i,j,x0)),其中[i,j]是子串[l,r]的子串。 这个题的最重要的性质在于: 一、对于a>=b,F(i,j,a)>=F(i,j,b); 二、记G(i,j)为F(i,j,inf原创 2016-05-26 10:43:20 · 1384 阅读 · 0 评论 -
[BZOJ3295][Cqoi2011]动态逆序对(分块重建)
题意:一个排列,每次删除一个数,求每次删除后的逆序对的数量。 正确姿势请移步 http://blog.csdn.net/u011542204/article/details/50571409 将操作分成根号M段,然后每段内的操作按下标排序,计算它前面的比他小的和它后面的比他大的。有一个问题就是同一个块当中的没有被减掉,由于一个块内只有根号M个操作,暴力减掉即可。 如果要在线的话将那个排序变成原创 2016-06-02 11:13:01 · 751 阅读 · 0 评论