本文主要是介绍1200*B. Interesting Subarray(贪心规律),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem - 1270B - Codeforces
解析:
可以发现,对于某个符合条件的数列,如果两个最值不在两端,那么可以删去两端多余的元素直到两个最值在两端为止。
我们观察某两个相邻元素a、b,可以发现这两个元素组成的序列成立的条件为abs(b-a)>=2
再观察三个元素a、b、c,可以发现成立条件为abs(c-a)>=3,即a、b、c三个元素不是连续的数字即可。
可以证明更长的序列显然,只需要符合有任意两个相邻元素大于等于2即可成立。
#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(贪心规律)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!