• Codeforces Round #520 (Div. 2)A. A Prank


    题解:确定边界条件即可,[1,1000]

    下标从1到n,0下标记为0,n+1下标记为1001(高手勿喷)。

    基本条件:比前一个小1且比后一个大1,满足就++,否则中断,重新初始化为0,重新开始。每次操作完更新最大值。

    举例说明:

    1 2 3 4能删3个,1贴左边界,2 3 满足基本条件

    4 5 6 7能删2个,只能删5 6,左右都不贴边界

    5 997 998 999 1000能删后三个,1000贴右边界,998 999满足基本条件。

    不加边界处理,只是满足基本条件会漏,比如1 2 3 4 5 只有2 3 4满足基本条件,

    会漏掉1.

    AC代码

    #include <iostream>
    
    using namespace std;
    const int maxn=500;
    int a[maxn];
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        a[0]=0;
        a[n+1]=1001;
        int ans=0;
        int p=0;
        for(int i=1;i<=n;i++){
            if(a[i]-1==a[i-1]&&a[i+1]-1==a[i])
                p++;
            else
                p=0;
            ans=max(ans,p);
        }
        cout<<ans<<endl;
        return 0;
    }
    
  • 相关阅读:
    Angular(一)
    多变的形状
    二叉树
    快速排序
    冒泡排序
    插入排序
    大话程序猿眼里的高并发架构
    整屏滚动
    增加删除一行标签
    无缝滚动
  • 原文地址:https://www.cnblogs.com/UUUUh/p/10284064.html
Copyright © 2020-2023  润新知