社区讨论

线性分块,跑的飞快

P3865【模板】ST 表 & RMQ 问题参与者 12已保存回复 42

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
41 条
当前快照
1 份
快照标识符
@lo25ihue
此快照首次捕获于
2023/10/23 08:20
2 年前
此快照最后确认于
2023/11/02 11:45
2 年前
查看原帖
这边提供一个 O(n)O(n) 的分块做法st表模板题肯定不用st表过啊
经典分块块大小 sqrt(n)sqrt(n) ,对每一块求出最大值, 预处理 O(n)O(n) , 每次询问 n\sqrt{n} ,显然挂掉。 考虑预处理出第 ii 块到第 jj 块的最大值, 复杂度 n×n=O(n)\sqrt{n} \times \sqrt{n} = O(n), 这样对于整块询问可以做到 O(1)O(1), 但是零散块的暴力容易被卡。 考虑对每一块多维护一个前缀最大值和后缀最大值,就可以做到询问 O(1)O(1) 了。
代码贴在底下, 无吸氧 761ms761msrankrank17/52717/527 ,跑的飞快。整活做法, 仅供参考

回复

42 条回复,欢迎继续交流。

正在加载回复...