题意:
给你一个长度为n的数组a,你可以选择一个数k(1<=k<=n)。将这个数组分别在前缀长度为k的地方和后缀长度为n-k的地方排序。
问你是否不能将其变成非降序数组。
题解:
emmm…那么我们只需要找是否有一个位置i∈[1,n),a[i]>a[i+1]。那么k只需要等于i,是不是就意味着a[i]和a[i+1]无论变到了哪里,都至少有一个地方是逆序的。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
int a[2]={0},f=0;
for(int i=1;i<=n;i++){
scanf("%d",&a[i%2]);
if(a[i%2]<a[1-i%2])f=1;
}
printf("%s\n",f?"YES":"NO");
}
return 0;
}