题解 | #小苯的麦克斯#

小苯的麦克斯

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;
}
全部评论

相关推荐

04-01 11:08
中原工学院 Java
老六f:感觉这种培训期过了就找理由给你开了
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务