ACM_分块
yiqzq
人生如此复杂,机会多得像稠密图,我们没理由认输。尽管我们走不了最短路,但图仍是连通图,TLE之前,没有一个节点叫失败。
展开
-
LOJ #6285. 数列分块入门 9(求区间众数的非优化和优化版本)
原题地址:https://loj.ac/problem/6285 题意:给出一个长为 n 的数列,以及n 个操作,操作涉及询问区间的最小众数。 思路:这题拖了好几天了。 看hzwer博客说,可以看《区间众数解题报告》,专门介绍了如何求解区间上的众数。 仔细研究了一下,确实讲的好细。 #include <bits/stdc++.h> using namespace st...原创 2018-06-12 22:15:16 · 1243 阅读 · 0 评论 -
LOJ #6283. 数列分块入门 7
原题地址:https://loj.ac/problem/6283 题意:给出一个长为 n的数列,以及 n 个操作,操作涉及区间乘法,区间加法,单点询问。 觉得原作说的很详细了,主要是对于每个查询都是先乘再加,所以对于区间更新的加法可能会卡在区间乘法之间,因此,对于每一个块的加法要乘以后面所有的乘数 我们让乘法标记的优先级高于加法(如果反过来的话,新的加法标记无法处理) 若当前的一个块乘以m...原创 2018-06-09 18:36:49 · 538 阅读 · 0 评论 -
LOJ #6282. 数列分块入门 6
原题地址:https://loj.ac/problem/6282 题意:给出一个长为 n 的数列,以及 n 个操作,操作涉及单点插入,单点询问,数据随机生成。 思路:在这题中,单纯的数组分块难以实现插入的功能,因为你插入一个元素,为了影响次序,必须将这个元素之后的元素都往后移动一位,这太浪费时间。 所以这里考虑每一个分块的数据用vector来维护,这样便于实现插入操作,并且往后挪移一位元素的...原创 2018-06-09 02:31:31 · 524 阅读 · 0 评论 -
LOJ #6281. 数列分块入门 5
原题地址:https://loj.ac/problem/6281 题意:给出一个长为 n 的数列 a,以及 n 个操作,操作涉及区间开方,区间求和。 思路:对于整块的开方操作不像加法一样可以叠加,开方必须要对每一个数进行操作,这样才能进行区间加法运算,但是这样的话就等于暴力计算每一个数字,复杂度是n2n2n^{2},这样无疑是超时的。于是我们考虑开方的性质,可以发现对于一个int类型的整数,最...原创 2018-06-08 17:36:23 · 258 阅读 · 0 评论 -
LOJ #6280. 数列分块入门 4
原题地址:https://loj.ac/problem/6280 题意:给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,区间求和。 思路:对于区间求和,操作和之前一样,只是对于不完整的块,原来只是加上c就行了,现在只是需要同步更新sum值(整块的和)。 下面是hzwer大牛的原话: 这题的询问变成了区间上的询问,不完整的块还是暴力;而要想快速统计完整块的答案,需要维护每个块的...原创 2018-06-08 12:46:37 · 476 阅读 · 0 评论 -
LOJ #6279. 数列分块入门 3
原题地址:https://loj.ac/problem/6279 题意:给出一个长为 nnn 的数列,以及 nnn 个操作,操作涉及区间加法,询问区间内小于某个值 xxx 的前驱(比其小的最大元素)。 思路:和区间加法和分块2的差不多。我们只需要对分块2的查询操作做修改就行了。 注意:除了可以像我下面的代码一样使用vector来排序查找一样,还可以使用set来维护块中的数据。只不过将先清空再...原创 2018-06-08 01:11:02 · 563 阅读 · 0 评论 -
LOJ #6277. 数列分块入门 1
题意:给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,单点查值。 思路: 分块基础题。对于区间加法,如果当前的区间位与整个块,那就统一用一个数组sum处理,用于记录整个块加了多少值。如果是残缺块,就直接暴力。 这题经过实测,发现读入挂会快上100ms 不多说了,上代码 #include <bits/stdc++.h> using namespace std...原创 2018-06-07 19:22:35 · 358 阅读 · 0 评论 -
LOJ #6278. 数列分块入门 2
原题地址:https://loj.ac/problem/6278 题意:给出一个长为 n 的数列,以及 n个操作,操作涉及区间加法,询问区间内小于某个值 x的元素个数。 思路:这里有两种操作,一种是区间加法,这在上一博客已经介绍过了,不会的戳这里,还有一种是区间查询,因为每次查询的数字都是不一样的,所以要想时间最优化,必须要排序,因为排序后的查询操作可以达到log的复杂度。 这里运用hzwe...原创 2018-06-07 23:30:46 · 529 阅读 · 0 评论 -
LOJ #6284. 数列分块入门 8
原题地址:https://loj.ac/problem/6284 题意:给出一个长为 n 的数列,以及 n 个操作,操作涉及区间询问等于一个数 c的元素,并将这个区间的所有元素改为 c。 思路:只需要用一个数组去维护区间的值是否统一,如果统一那么是否与所要比较的c相等,如果相等就结果加上整块的大小,如果不等,只要修改区间的标记计即可。那么对于不完整的块暴力即可。 下面是原作的题解: 区间修...原创 2018-06-10 01:13:44 · 509 阅读 · 0 评论