POJ 2104 K-th Number 题意:给出一段数列,让你求[L,R]区间内第k大的数字 #include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <algorithm> using ...
分类:
其他好文 时间:
2020-05-26 22:13:05
阅读次数:
76
闲话 这是一篇 在线算法 的题解!!! 用了分块,虽然比莫队差一点点点点,但怎么说也是一种优美的解法。 只是比较考验细节,调了好几个小时啊啊啊啊啊。。。 wtcl... 正片 数列分块的思想(熟悉的可以略过) 数列分块又被称作数列的平方分割。 数列分块是将整段数列分为均匀的几块,使得每块长度为$b$ ...
分类:
其他好文 时间:
2020-02-06 13:03:31
阅读次数:
63
题意 : 给出一个含有 N 个数的序列,然后有 M 次问询,每次问询包含 ( L, R, K ) 要求你给出 L 到 R 这个区间的第 K 大是几 分析 : 求取区间 K 大值是个经典的问题,可以使用的方法有很多,我听过的只有主席树、整体二分法、划分树、分块…… 因为是看《挑战》书介绍的平方分割方法 ...
分类:
其他好文 时间:
2018-01-19 21:26:21
阅读次数:
141
分桶法(bucketmethod)是把一排物品或者平面分成桶,每个桶分别维护自己内部的信息,以达到高效计算的目的的方法。
其中,平方分割(sqrtdecomposition)是把排成一排的n个元素每根号n个分在一个桶内进行维护的方法的统称。这样的分割方法可以使对区间的操作的复杂度降至O(根号n)。
和线段树一样,根据维护的数据不同,平方分割可以支持很多不同的操作。接下来,和线段树一样,...
分类:
其他好文 时间:
2016-04-29 15:57:51
阅读次数:
451
干掉这道题的那一刻,我只想说:我终于**的AC了!!! 最终内存1344K,耗时10282ms,比起归并树、划分树以及其他各种黑科技,这个成绩并不算光彩⊙﹏⊙ 但至少,从最初的无数次TLE到最终的AC,这过程见证了一个二分算法的艰辛优化 先贴代码: 1 const int bktSize=1024; ...
分类:
其他好文 时间:
2016-04-05 01:58:05
阅读次数:
252
题目链接:
http://poj.org/problem?id=2104
解题思路:
因为查询的个数m很大,朴素的求法无法在规定时间内求解。因此应该选用合理的方式维护数据来做到高效地查询。
如果x是第k个数,那么一定有
(1)在区间中不超过x的数不少于k个
(2)在区间中小于x的数有不到k个
因此,如果可以快速求出区间里不超过x的数的个数,就可以通过对x进行二分搜索来求出第k个数...
分类:
其他好文 时间:
2015-08-25 12:06:26
阅读次数:
201
Big String 给一个字符串,长度不超过 106,有两种操作: 1. 在第 i 个字符的前面添加一个字符 ch 2. 查询第 k 个位置是什么字符操作的总数不超过 2000如果直接模拟的话,移动到后面的数据量太大。我们分块的话,...
分类:
编程语言 时间:
2015-04-04 10:28:22
阅读次数:
148