
分桶法和平方分割
stdwal
天演在化,功成在学。知海无涯,见花问道。
展开
-
POJ2104-K-th Number
静态区间求第K大的值,有多种方式。 首先可以用分桶法和平方分割求解,将数据分为多个桶,每个桶分别处理桶内的数据以降低复杂度。#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int maxn = 100000 + 10;const int B = 1000;int a[maxn];原创 2016-08-27 22:01:34 · 411 阅读 · 0 评论 -
Ural2062-Ambitious Experiment
给出n个数字,有两个操作,一个是查询某个位置上的数值,另一个是给定区间[l,r]和一个数字d,要求从l到r中的每个位置i开始,a[i]增加d,a[2*i],a[3*i], … ,每个位置都增加d。 方法是采用分桶法和平方分割,分成a个有floor(sqrt(n))个元素的桶,每个桶维护各自的信息,即增加了多少。 查询时,枚举因子求出这个数被增加了多少,再与原数相加即可。#include <cst原创 2016-11-23 00:14:04 · 530 阅读 · 0 评论