题目传送门
这道题其实是一道思维题,其实题目还是不很难。
通过画画图,因为这个序列是有序的下标递增序列,因此
下标一定满足|p-r|=|p-q|+|q-r|,因此只需要纵坐标不满足这个性质就行,因此只要这三个纵坐标不满足增函数或者减函数就行。
#include<iostream>
using namespace std;
int a[2102100];
int judge(int x,int y,int z){
return (x<=y&&y<=z)||(x>=y&&y>=z);
}
int main(){
int T;
cin>>T;
while(T--){
int n;
cin>>n;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
int cnt=2*n-1;
for(int i=1;i<=n-2;i++){
if(judge(a[i],a[i+1],a[i+2])==0){
cnt++;
if(i+3<=n&&judge(a[i],a[i+2],a[i+3])==0&&judge(a[i],a[i+1],a[i+3])==0&&judge(a[i+1],a[i+2],a[i+3])==0)cnt++;
}
}
cout<<cnt<<endl;
}
}