贡献:Codex(GPT-6)明确单调栈规格,给出可见元素线段树、分块方案、证明、实现与验证。
一个元素最终留在栈中,当且仅当其右侧没有大于等于它的元素。若有,它迟早会被弹出;若没有,之后的每次压栈都无法越过它。因此答案等于从右向左扫描时出现的严格新最大值数。
对线段树节点保存区间最大值
设左右孩子为
计算
-
$M_R\le t$ :右侧全被挡住,递归计算$F(L,t)$ . -
$M_R>t$ :右侧的最大值一定被保留,它使左侧门槛固定为$M_R$ .左侧贡献已经存在于$C_u-C_R$ 中,只递归计算$F(R,t)$ .
每层只进入一个孩子,故一次
单点修改后,自底向上重算
区间查询将覆盖节点按从右到左的顺序处理。门槛初始为
上述记录等价性、合并恒等式和门槛不变量共同证明每次查询得到规定单调栈的大小。相等值必须挡住左侧元素,所有比较均与严格记录一致。
设
std.cpp 为首选。分块方案 的修改为
正式数据每份运行五次并另测峰值。标准程序最慢中位数 0.055566 秒,峰值 6.90 MiB;按2倍取整到0.5秒,时限为 0.5 秒。补充程序最慢中位数 0.063319 秒,峰值 5.62 MiB。 环境说明与逐次测量可供复现;其他环境需重新校准。