
分块
ezoi_ly
这个作者很懒,什么都没留下…
展开
-
【CODECHEF】Chef and Churus(分块)
有一个长度为n的数组A和n个区间[li,ri],有q次操作:1 x y:把ax改成y2 x y:求第l个区间到第r个区间的区间和的和。n,q≤10510^5105,ai≤10910^9109首先,修改一个数肯定会改变区间和以及区间和的和,q≤10510^5105,应该是要在sqrt(n)或logn完成修改操作,查询操作也是如此。想到了分块。数组分块,记录每一个点在该块的前缀和(求块的前缀和时用到),记录每一个块的前缀和(有利于询问在求区间和时用到)。同时,区间也是同样的分块。对于每一个区间块,原创 2020-05-29 20:15:25 · 493 阅读 · 0 评论 -
【CODECHEF】Children Trips(分块)
主要的操作是:每一天走到最远能够走到的休息区确实一开始没有想到是分块,只是觉得1<=d<=21<=d<=21<=d<=2有点东西,但是没有搞出来。其实也可以说是分类讨论。首先肯定都是求出lcalcalca,两点都向lcalcalca跳。1.P>sqrt(n)1.P>sqrt(n)1.P>sqrt(n)这样的P有一个特点,就是他每天至少是要走sqrt(n)公里的,直接暴力跳O(nsqrt(n))O(nsqrt(n))O(nsqrt(n)),可..原创 2020-05-29 19:55:31 · 304 阅读 · 0 评论 -
Array Transformer(分块)
题目大意:给定一个长度为nnn的序列和mmm次操作,每次操作设ansansans为在[l,r][l,r][l,r]中严格效益v的数的个数,将a[p]a[p]a[p]改为(k∗ans)/(r−l+1)(k*ans)/(r-l+1)(k∗ans)/(r−l+1)题解:可以将操作分为两步:1.求ans2.更改数值分块,块内有序,便于查询ans,更改后与左右进行交换,保证块内有序。例如,读...原创 2020-01-17 14:19:32 · 448 阅读 · 0 评论