Problem - 1270B - Codeforces
解析:
可以发现,对于某个符合条件的数列,如果两个最值不在两端,那么可以删去两端多余的元素直到两个最值在两端为止。
我们观察某两个相邻元素a、b,可以发现这两个元素组成的序列成立的条件为abs(b-a)>=2
再观察三个元素a、b、c,可以发现成立条件为abs(c-a)>=3,即a、b、c三个元素不是连续的数字即可。文章来源:https://www.toymoban.com/news/detail-718702.html
可以证明更长的序列显然,只需要符合有任意两个相邻元素大于等于2即可成立。文章来源地址https://www.toymoban.com/news/detail-718702.html
#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;
}
到了这里,关于1200*B. Interesting Subarray(贪心&规律)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!