AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

AcWing 1210. 连号区间数    原题链接    简单

作者: 作者的头像   不二_3 ,  2021-02-23 23:23:51 ,  阅读 25


0


连号区间

虽然都都是暴力枚举,但第一次的思路最差,
第二次利用上了判断极差,不用排序但是放到一个函数中单独一层循环复杂度很高
第三次直接在枚举的时候找到max和min,复杂度O(n2)

C++ 代码

/*连号区间数 暴力枚举,超时*/
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N=1e4+10;
int p[N];
/*
int t[N];
bool run(int l,int r)
{//过了4个数据,超时 
    memset(t,0,sizeof t);
    for(int i=l;i<=r;i++)t[i]=p[i];
    sort(t+l,t+r+1);
    //bool tag=true;
    for(int i=l;i<r;i++)
        if(t[i+1]-t[i]!=1)
            return false;
    return true; 
}
*/
/*
int runp(int l,int r){
    //过了8个数据,超时 
    int max=p[l],min=p[r];
    for(int i=l;i<=r;i++){
        if(max<p[i])max=p[i];
        if(min>p[i])min=p[i];
    }
    return max-min;
}
*/
int main()
{
    int n;cin>>n;
    for(int i=1;i<=n;i++)cin>>p[i];

    int res=0;
    for(int i=1;i<=n;i++){
        int _max=0,_min=1e4+10; 
        for(int j=i;j<=n;j++){
            _max=max(p[j],_max);
            _min=min(p[j],_min);
            if(_max-_min==j-i)
                res++;
        }
    }
    cout<<res<<"\n";

    return 0;
 } 

0 评论

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息