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;
}
posted @ 2025-08-25 23:03  流云鹤=  阅读(10)  评论(0)    收藏  举报