
分块
GEOTCBRL
?????
展开
-
【bzoj2724】[Violet 6]蒲公英
坑了好久的区间众数…… 思路是分块。 设块的大小为ll,有xx个块 预处理第i个块和第j个块之间的众数和出现次数,这是O(xn)O(xn)的。 对于每个询问[l,r][l,r],如果l和r在同一个块里面,就暴力查询,这是O(l)O(l)的;如果不在同一个块,则先以预处理的信息得到中间连续的块的答案,然后再在最两边的两个块暴力查询每个数在中间出现的次数,然后更新答案。偷懒没多想原创 2015-11-18 20:39:02 · 1219 阅读 · 0 评论 -
【bzoj4241】历史研究
这题也是坑了好久>_< 之前whx带我刷JOI的时候本来应该要做的。。。可是太懒没有写。。。 区间询问加权众数。 分块,预处理出块和块之间的答案,记录到第i个块数字x出现了多少次。然后查询的时候和普通众数基本一样,就是乘了个权值而已。 要离散化。 时间复杂度O(nlogn+mn√)O(n\log n+m\sqrt n) 。 昨晚写的常数太烂了。。。用了st原创 2015-11-19 15:43:52 · 960 阅读 · 0 评论 -
【 bzoj 3509 】[CodeChef] COUNTARI - 分块FFT
看起来很像数据结构乱搞? 然而仔细看看数据范围:Ai<=30000A_i<=30000 这意味着我们可以用生成函数来乱搞。 将式子变成Ai+Ak=2AjA_i+A_k=2A_j,于是就可以很愉快地枚举j,记录j两边的生成函数,然后求卷积 就行了 ……? 毛。。。这样卷积是O(nVlogV)O(nV\log V)的 //以下设V=max{A}V=\max\{A\原创 2016-02-04 21:05:23 · 2377 阅读 · 0 评论