5.16 每日一题题解
序列最小化
涉及知识点:
- 贪心
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;
}