数据结构——分块/莫队
#
夕林山寸
这个作者很懒,什么都没留下…
展开
-
HDU 6756 2020 Multi-University Training Contest 1 1006 分块+均摊复杂思想 做到n * sqrt(n)复杂度
更新一下这题的n*sqet(n)解法。 我们发现:这题要么更新是O(n),查询是O(1),要么更新是O(1),查询是O(n). 我们可以采取均摊复杂度的思想,让查询和更新都做到O(sqrt(n)). 每次更新:若当前节点的度数小于等于根号n,那么则暴力更新其周围节点。否则不管,其影响留到查询时更新。 查询时:点x的周围节点,度数小于等于根号n的节点更新对x造成的影响已经更新。只需要考虑度数大于根号n的节点更新对x造成的影响。由于x周围度数大于根号n节点不会超过根号n个,所以此次更新影响也是根号n级别原创 2020-07-22 13:53:50 · 285 阅读 · 0 评论 -
CF1207 F - Remainder Problem 分块
单点更新, 每次查询所有id 为模x余y 的和。 当模数大于sqrt(n)时,暴力,所有满足条件的数,复杂度 n/sqrt(n). 当模数小于sqrt(n)时,预处理出 mo[x][y], 复杂度O n , 数组开到[708][708] 分块思想,即可解决这题。 #include <bits/stdc++.h> using namespace std; typedef long long ll; #define ls (o<<1) #define rs (o<&l.原创 2020-06-13 22:52:14 · 347 阅读 · 0 评论