首页 > 小苯的麦克斯
头像 憨憨的竹林
发表于 2026-04-06 01:26:25
感觉有点诈骗的意味 假如区间是可以只取一个数的,那么显然最后求得ans = max - 0,不论max值是否为0 但题目要求我们的区间至少得取2个数,所以我们可以从上面这个思路进行一下延伸 可以证明按如下情况分类: 1.当max值两侧没有0的时候(如max在边缘则是一侧),ans = max 2.当 展开全文
头像 AliLexiWalker
发表于 2026-04-06 10:58:57
这题其实不用看整段区间,只要看相邻两个数就够了,因为想让区间里的最大值尽量大,最后只会落到某一对相邻元素上。 于是直接枚举每一对相邻数,算出这两个数的 mex,再取“max−mex”的最大值,答案就是这样。 void solve(){ int n;cin>>n; vi a 展开全文
头像 此在Dasein
发表于 2026-04-06 02:35:22
一、 问题分析 问题的核心是寻找一个长度 的连续子区间 ,使得 最大化。 MAX:区间内的最大元素。 MEX:区间内未出现的最小非负整数(从 0 开始)。 约束:,这意味着算法必须达到 或 的时间复杂度。由于涉及连续区间,通常考虑滑窗、单调栈或性质挖掘。 二、 性质:单调性与局部最优 为 展开全文
头像 lemonyyds
发表于 2026-04-06 00:20:59
题解问题理解给定一个序列 a,要选择一个长度至少为 2 的连续子区间 [l, r],使得区间内最大值减去最小未出现非负整数 (MEX) 的值最大。关键结论最优区间一定可以取长度为 2 的相邻子区间。理由如下:若某个最优区间的 MEX = 0,说明区间内不含 0。此时取该区间内最大值所在的元素,再任选 展开全文
头像 牛客69596014号
发表于 2026-04-06 08:42:34
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int t=s 展开全文
头像 chenlan114
发表于 2026-04-06 11:10:12
#include<bits/stdc++.h> using namespace std; using ll=long long; int main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); ll T; 展开全文