1200*B. Interesting Subarray(贪心&规律)

Problem - 1270B - Codeforces

解析:

可以发现,对于某个符合条件的数列,如果两个最值不在两端,那么可以删去两端多余的元素直到两个最值在两端为止。

我们观察某两个相邻元素a、b,可以发现这两个元素组成的序列成立的条件为abs(b-a)>=2

再观察三个元素a、b、c,可以发现成立条件为abs(c-a)>=3,即a、b、c三个元素不是连续的数字即可。

可以证明更长的序列显然,只需要符合有任意两个相邻元素大于等于2即可成立。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int t,n,a[N]; 
signed main(){
	scanf("%lld",&t);
	while(t--){
		scanf("%lld",&n);
		int f=0;
		for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
		for(int i=1;i<n;i++){
			if(abs(a[i]-a[i+1])>=2){
				f=1;
				puts("YES");
				printf("%lld %lld\n",i,i+1);
				break;
			}
		}
		if(!f) puts("NO");
	}
	return 0;
}
相关推荐
6Hzlia1 分钟前
【Hot 100 刷题计划】 LeetCode 215. 数组中的第K个最大元素 | C++ 快速选择与堆排序题解
c++·算法·leetcode
小白菜又菜1 分钟前
Leetcode 3070. Count Submatrices with Top-Left Element and Sum Less Than k
算法·leetcode·职场和发展
爱编码的小八嘎6 分钟前
C语言完美演绎7-2
c语言
爱写代码的小朋友6 分钟前
使用 Nuitka 打包 Python 应用:从入门到进阶
开发语言·python
yuan1999711 分钟前
C# 断点续传下载文件工具设计与实现
开发语言·c#
想唱rap13 分钟前
线程之条件变量和生产消费模型
java·服务器·开发语言·数据库·mysql·ubuntu
笨笨饿15 分钟前
32_复变函数在工程中实际应用区别于联系
linux·服务器·c语言·人工智能·单片机·算法·学习方法
「QT(C++)开发工程师」21 分钟前
C++17三大实用特性详解:内联变量、std::optional、std::variant
jvm·c++
会编程的土豆22 分钟前
【数据结构与算法】拓扑排序2
数据结构·算法·leetcode
Boop_wu29 分钟前
[Java 算法] 栈
java·开发语言·算法