分块
hollowstory
这个作者很懒,什么都没留下…
展开
-
SPOJ-ZQUERY(分块)
题意:有一个由1和-1组成的数列,现给M个询问(L,R),求区间(L,R)中和为0的最长子串长。 分块的思想,真的很神奇。 先考虑一个普通的询问,求一遍前缀和,记录下所有每个前缀和的所有下标,遍历一次,二分得结果,复杂度为nlgnnlgn。 如果预处理出一个区间,那么对于所有包含这个区间的询问,复杂度为两区间之差乘个log。那么,当预处理好的元区间足够小时,可以有很大的优化。设元区间大小为k原创 2017-09-15 19:41:17 · 549 阅读 · 0 评论 -
Codeforces 474F(分块)
题意:给长度为N的数列,t个询问[l,r],求区间[l,r]中不能整除区间中其它数的数有多少个。这题和之前一道分块题简直一模一样,于是就用分块做了。没个询问的答案,就是区间长度减去值为区间gcd的数的个数。那么预处理出每段的答案及这段的gcd,可以很容易推出答案。#include<bits/stdc++.h>using namespace std;const int N = 5e5 + 20; co原创 2017-09-19 18:42:05 · 440 阅读 · 0 评论