序列最小化
涉及知识点:
- 贪心
solution:
- (给出的数字是1到n的排列,所以最终每个数字一定都是1)
- (对于除了1的n-1个数,如何用最少的次数让他们都变成1)
- (每次变换,我们至多可以选择和1相邻的k-1个数)
- (其实就相当于总共n-1个数,每次可选择k-1个数变成1,问你最少次数)
- (答案就是frac{n-1}{k-1}的上取整)
std:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
int n,k,x;
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>x;
int ans = (n-1)/(k-1);
if((n-1)%(k-1) != 0)
ans++;
cout<<ans<<endl;
return 0;
}