题解 | #小苯的麦克斯#
小苯的麦克斯
https://www.nowcoder.com/practice/de5b60b23a014f1bb66b8164faea3d0d
这题其实不用看整段区间,只要看相邻两个数就够了,因为想让区间里的最大值尽量大,最后只会落到某一对相邻元素上。
于是直接枚举每一对相邻数,算出这两个数的 mex,再取“max−mex”的最大值,答案就是这样。
void solve(){
int n;cin>>n;
vi a(n);
for(int i=0;i<n;++i)cin>>a[i];
ll ans=-LINF;
for(int i=0;i<n-1;++i){
int x=a[i],y=a[i+1];
bool has0=(x==0||y==0);
bool has1=(x==1||y==1);
int mex=0;
if(has0){
mex=has1?2:1;
}
ll cur=max(x,y)-mex;
ans=max(ans,cur);
}
cout<<ans<<endl;
}
查看12道真题和解析