第 188 课
前缀最大/最小思想
🔵 基础 约 7 分钟
一句话理解
前缀最大/最小:pre[i]=max(a[1..i])。
为什么要学
“左边最大是多少”可以 O(1) 查。
讲解
一边扫一边维护。也可以后缀最大。常用来枚举分割点。
它不是区间任意 [l,r] 的最值,那要用 ST 表或线段树。
例子
pre[1] = a[1];
for (int i = 2; i <= n; i++) pre[i] = max(pre[i-1], a[i]);
pre[i] 只表示从 1 到 i。
常见错误
- 用前缀最大去回答任意区间最值。
- 初始化成 0 遇负数。
练习 做完再看下一课
任意区间最值,前缀最大够不够?
固定左端为 1。
在线练习 C++ 在浏览器里编译,代码不会上传 已通过
Ctrl / ⌘ + Enter 运行 · Tab 缩进
隐藏测试点只是界面不展示数据。题目 JSON 会下发到浏览器,可在开发者工具里看到,只适合自学,不是正式比赛评测。
进度保存在本机浏览器里。
左右方向键也可翻课