CF1768B
这个题我们从1开始扫数组,把能够按顺序排下去的数字个数记录下来,用总数减去就是需要排序的个数,再除以k,如果能一次拿出来结果就是1,不然就是n/k上取整
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,k;
cin>>n>>k;
int cnt=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]==cnt+1) cnt++;
}
n-=cnt;//操作后n是需要被选择去排序的数的个数
if(n%k==0)cout<<n/k<<endl;
else cout<<n/k+1<<endl;
}
return 0;
}

浙公网安备 33010602011771号