脑洞:整体分块 + BSGS

Ran 让 EI 刷整体二分的题,并且丢给 EI 一道「ZJOI2013」K大数查询

但是 EI 并不想写整体二分。也不想写数据结构。于是一拍脑门,就有了这个奇怪的想法。

大致思路:对于 c c c 先离散化,然后考虑一个类似 BSGS 的找答案的过程:将从大到小的 c c c 分成 M \sqrt M M 段,按顺序计算每个询问的区间中有多少个数落在第 i i i 段内的颜色中。该过程发生 M M M 次修改和 Θ ( M M ) \Theta(M\sqrt M) Θ(MM ) 次询问,我们不妨使用一个块状数组来维护,即可做到时间 Θ ( M ( N + M ) ) \Theta \left(M(\sqrt N + \sqrt M)\right) Θ(M(N +M ))。这是 Giant step,接着 Baby step 我们的做法几乎是相同的,复杂度也一致。

对于这道例题而言无疑不算一个时间复杂度很优秀的解,但是常数小,代码不算难写。如果遇到一些树形结构无法维护的问题时,该思路就显得有一定优势了。(或许?)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值