题意:给你一个长度为n的数组每一次只能选数组中的一个元素放在第一个位置。问你至少你移动多少次才能使数组内的元素不递减。
思路:
a数组为原来的数组b数组为排序之后的数组,从b数组的最后一个开始一直往前去匹配a数组的最后一个一直往前,匹配上的就是不用移动的;
代码:
#include<bits/stdc++.h>
#define maxn 1000005
#define ll long long
using namespace std;
int a[maxn];
int b[maxn];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
for(int i=1; i<=n; i++)
b[i]=a[i];
sort(b+1,b+n+1);
ll ans=0;
int cur=n;
for(int i=n; i>=1; i--)
{
if(a[i]==b[cur])
cur=cur-1;
}
printf("%d\n",cur);
}
return 0;
}