题解:P3865 【模板】ST 表 && RMQ 问题
1.题解:P3201 [HNOI2009] 梦幻布丁2.题解:P7020 [NWRRC2017] Boolean Satisfiability3.题解:P6614 蛋糕 Cake4.题解:UVA10503 The dominoes solitaire5.题解:AT_abc383_c [ABC383C] Humidifier 36.题解:AT_abc266_c [ABC266C] Convex Quadrilateral7.题解:AT_abc296_e [ABC296E] Transition Game8.题解:CF350C Bombs9.题解:B3832 [NICA #2] 回来吧我的小波10.题解:B3803 [NICA #1] 上大分11.题解:AT_abc236_f [ABC236F] Spices12.题解:CF626B Cards13.题解:CF603A Alternative Thinking14.题解:CF917A The Monster15.题解:CF1540A Great Graphs16.题解:AT_arc008_3 [ARC008C] THE☆たこ焼き祭り201217.题解:P6606 [Code+#7] 最小路径串18.题解:P2422 良好的感觉19.题解:P2032 扫描20.题解:P1160 队列安排21.题解:ABC395(A-E)
22.题解:P3865 【模板】ST 表 && RMQ 问题
23.题解:P2590 [ZJOI2008] 树的统计24.答案:牛客周赛 Round 83(A-E)25.题解:U540617 捡松果26.题解:P3390 【模板】矩阵快速幂 & 矩阵快速幂加速递推的应用思路27.题解:P11848 [TOIP 2023] 房屋推荐28.题解:P2146 [NOI2015] 软件包管理器思路
ST表是一种基于倍增思想的预处理算法。
倍增算法的用处:
变化了k次,k次之后是啥
用了二进制的思想
st[s][i] s是起点,跳2^i步
位运算时间复杂度为O(1)
推荐阅读资料:https://oi-wiki.org/ds/sparse-table/
AC代码
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MAXN = 1e6 + 10; int st[MAXN][21]; int query(int l, int r) { int k = log2(r - l + 1); return max(st[l][k], st[r - (1 << k)+1][k]); } int main() { // freopen("text.in","r",stdin); // freopen("text.out","w",stdout); ios::sync_with_stdio(0), cout.tie(0), cin.tie(0); int N, M; cin >> N >> M; for (int i = 1; i <= N; i++) { cin >> st[i][0]; } for (int j = 1; j <= 21; j++) { for (int i = 1; i + (1 << (j - 1)) <= N; i++) { st[i][j] = max(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]); } } for (int i = 1; i <= M; i++) { int l, r; cin >> l >> r; cout << query(l, r) << '\n'; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话