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;
}
相关推荐
潼心1412o6 小时前
C++初阶(长期更新)第9讲:string(上)
开发语言·c++
朝朝辞暮i6 小时前
C++ 第 39 章: 阶段性总复习——类、对象、构造、继承、this、指针与智能指针
开发语言·c++·算法·ros2
wuminyu6 小时前
Virtual Thread重投递至ForkJoinPool任务队列过程解析
java·linux·c语言·jvm·c++
垆边人似月.6 小时前
华为题:污染水域
算法
All for pursuit.7 小时前
【回溯-6】79.单词搜索
数据结构·c++·算法·leetcode
掉进电商坑三年没爬出来的东叔7 小时前
青龙面板进阶:一个面板聚合多平台签到,所有积分自动领
java·开发语言
ZhangJun957 小时前
Mobike 共享单车分析项目
人工智能·python·算法·kmeans·聚类·knn
Navigator_Z7 小时前
LeetCode //C - 1281. Subtract the Product and Sum of Digits of an Integer
c语言·算法·leetcode
iCxhust7 小时前
51单片机电力载波应用开发(七)广播通讯
c语言·开发语言·单片机·嵌入式硬件·51单片机
薛定e的猫咪7 小时前
(AISTATS 2023)BaCaDI 逐章阅读
人工智能·深度学习·算法·机器学习