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;
}
posted @ 2020-05-16 09:41  QFNU-ACM  阅读(66)  评论(0编辑  收藏  举报