![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分块
文章平均质量分 53
y20070316
这个作者很懒,什么都没留下…
展开
-
[CodeForces #80 Div 1 D] 分块+树状数组/线段树
Part 1 题解题意给出一个长度为N(≤300000)N(\leq 300000)的数列aia_i,再给出MM个询问,每个询问是形如(x,y)(x,y)的形式,你需要输出ax+ax+y+ax+2y+...+ax+kya_x+a_{x+y}+a_{x+2y}+...+a_{x+ky}的和,其中x+(k+1)y>Nx+(k+1)y>N。分析对于每个询问,首先我们想到的方法是依次将axa_x,ax+ya原创 2016-02-03 17:59:23 · 697 阅读 · 0 评论 -
【BZOJ】1086 王室联邦
【题意】 给定NN个点的一棵树,要求将点划分成多个块,每个块BB满足存在至少一个点capcap,使得∀i∈B\forall i\in B,ii到capcap的路径上的点集(Path(i,cap)∖{cap})⊂B(Path(i,cap)\setminus\lbrace cap\rbrace)\subset B。 【数据范围】1≤B≤N≤10001\leq B\leq N\leq 1000【分析】原创 2016-01-23 09:42:09 · 391 阅读 · 0 评论 -
CodeVS 1080 线段树练习 分块 块状数组
题意给定序列a,支持两种操作: 1. 单点修改 2. 区间求和1≤N≤1000001\leq N\leq 100000 M≤10000M\leq 10000分析考虑分块。 我们把连续的n√\sqrt n个元素放在一块,并保存所有值的和。对于单点修改,找到对应块,修改对应点的值和块的和。对于区间求和,注意分类讨论: ①当l,rl,r在同一块时,直接求和; ②当l,rl,r不在同一块时,原创 2016-02-02 10:27:46 · 366 阅读 · 0 评论 -
BZOJ 2002 Hnoi2010 弹飞绵羊 分块
题意某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,Lostmonkey可原创 2016-02-02 16:52:23 · 347 阅读 · 0 评论 -
CodeChef "Chef and Churus" 分块+树状数组
题意给定nn个数和nn个区间和f[i]=∑rik=liakf[i]=\sum_{k=l_i}^{r_i} a_k,支持两种操作: 1. 将aia_i变为xx; 2. 求编号为xx到yy的所有ff的和。n≤100000n\leq 100000分析对于每个fif_i,可以直接使用树状数组求出。 所以我们可以使用分块,中间的直接用块的答案,边上的用树状数组。首先我们进行预处理,记录第i块中每个编号的原创 2016-02-02 17:11:22 · 486 阅读 · 0 评论 -
【BZOJ 3295】动态逆序对 - 分块+树状数组
题目描述给定一个1~n的序列,然后m次删除元素,每次删除之前询问逆序对的个数。分析:分块+树状数组(PS:本题的CDQ分治解法见下一篇)首先将序列分成T块,每一块开一个树状数组,并且先把最初的答案统计完成。对于每一次删除,找到对应位置,考虑删除之后的增减情况: ①块内:直接暴力,对于左边,少了比它大的个数,对于右边,少了比它小的个数,O(nT)O({n\over T}) ②块外:枚举每一块。对于原创 2016-03-12 14:51:06 · 370 阅读 · 0 评论