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;
    }
  • 相关阅读:
    信息搜集与漏洞扫描
    ASN.1分析Alipay证书
    任务计划
    2020系统综合实践 期末大作业 21组
    2020系统综合实践 第6次实践作业 2组
    第5次实践作业
    第4次实践作业
    第3次实践作业
    第2次实践作业
    第1次实践作业
  • 原文地址:https://www.cnblogs.com/TEoS/p/12120667.html
Copyright © 2011-2022 走看看