zoukankan      html  css  js  c++  java
  • CF1270B Interesting Subarray 题解

    22:20下晚自习所以只打了10+min,然而这并不能成为我脑抽没一眼看出B题的借口,所以又掉回绿名了qwq。所以我还是太菜了。

    题意分析

    给出一个数列,要求找出一段连续的子数列满足这个子数列的最大值与最小值之差不小于其元素个数。

    思路分析

    我们从最少的元素开始考虑。只有一个元素的子数列显然是不可行的,考虑含有两个元素的子数列。

    可以发现,只要这两个元素的差不小于2即为可行,因此我们在输入的同时比较相邻的元素判断是否可行即可。

    进一步分析可以发现,若整个数列都找不到满足上面这个条件的两个元素的子数列,则整个数列一定也不可行。因此按上面的方法判断即可。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int t,n;
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            bool ok=0;
            for(int i=1,x1=-1,x2;i<=n;i++)
            {
                scanf("%d",&x2);
                if(abs(x1-x2)>1 && !ok && x1!=-1)
                    printf("YES
    %d %d
    ",i-1,i),ok=1;
                x1=x2;
            }
            if(!ok)
                puts("NO");
        }
        return 0;
    }
  • 相关阅读:
    apache http server 和tomcat的区别 以及nginx
    2020-2-12 这样提升自己的口才
    两种常用的队列
    栈的实现与应用
    线性表
    Nginx实现虚拟主机
    将apache添加到服务
    apache安装
    最小生成树
    图的深度优先搜索
  • 原文地址:https://www.cnblogs.com/TEoS/p/12120667.html
Copyright © 2011-2022 走看看