
分块
文章平均质量分 58
范艺杰
这个作者很懒,什么都没留下…
展开
-
51nod1290 Counting Diff Pairs
题面题目连接解题思路使用莫队+树状数组的做法是显然的,但是复杂度是O(nnlogn)O(n \sqrt{nlogn})O(nnlogn)。介绍一种基于二次离线的做法,复杂度O(nn)O(n\sqrt n)O(nn)。在莫队区间移动时,例如从[l,r][l,r][l,r]变成[l,r+1][l,r+1][l,r+1]时,我们需要求得[l,r][l,r][l,r]中有对少个数和r+1有关。这可以拆分成对于[1,l−1][1,l-1][1,l−1]和[1,r][1,r][1,r]的两个前缀的询问。原创 2021-09-20 19:45:34 · 255 阅读 · 0 评论 -
洛谷P4135 作诗
题目题目链接解题思路考虑使用分块。使用res[i][j]表示完整考虑第i个块到第j个块的答案。对于每个询问l,r,我们只要其最近的块的答案,左右只可能多余两个不完整块。考虑不完整块对答案的影响即可。复杂度O(nn)O(n\sqrt{n})O(nn)。代码#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int N = 1e5 +原创 2021-04-08 21:43:17 · 120 阅读 · 2 评论 -
51nod2943 旅行者
问题描述:题目链接解题思路:首先指出题目数据范围有问题,有n*m<=20000的数据范围没有指出。令S=n∗mS=n*mS=n∗m,考虑递归的处理。每次选择较长边进行切割,并枚举切割边上的点当作源点跑最短路,并解答询问。因为切割的是长边,源点不超过S\sqrt{S}S。然后将询问递归到两个子矩形解决。所以我们可以写出递归方程T(S)=2T(S/2)+SSlog2ST(S)=2T(S/2)+S\sqrt{S}\log_2ST(S)=2T(S/2)+SSlog2S,根据主定理T(S)=原创 2021-03-11 21:27:37 · 214 阅读 · 2 评论