![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分块
ezoi_ly
这个作者很懒,什么都没留下…
展开
-
【CODECHEF】Chef and Churus(分块)
有一个长度为n的数组A和n个区间[li,ri],有q次操作: 1 x y:把ax改成y 2 x y:求第l个区间到第r个区间的区间和的和。 n,q≤10510^5105,ai≤10910^9109 首先,修改一个数肯定会改变区间和以及区间和的和,q≤10510^5105,应该是要在sqrt(n)或logn完成修改操作,查询操作也是如此。 想到了分块。 数组分块,记录每一个点在该块的前缀和(求块的前缀和时用到),记录每一个块的前缀和(有利于询问在求区间和时用到)。 同时,区间也是同样的分块。对于每一个区间块,原创 2020-05-29 20:15:25 · 409 阅读 · 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 · 233 阅读 · 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.求ans 2.更改数值 分块,块内有序,便于查询ans,更改后与左右进行交换,保证块内有序。 例如,读...原创 2020-01-17 14:19:32 · 378 阅读 · 0 评论