链接https://atcoder.jp/contests/arc099/tasks/arc099_a
题意 一个长度为N 的排列
每次选K个连续的数,然后所有的数都会变成这K个里的最小值,求最小操作次数
题解:水题
显然最后全变成1
从左到右覆盖过去就行了,注意下边界问题就行了
代码
#include<bits/stdc++.h> #define pb push_back #define fi first #define se second #define io std::ios::sync_with_stdio(false) using namespace std; typedef long long ll; typedef pair<ll,ll> pii; const double pi=acos(-1); const ll P = 998244353, INF = 0x3f3f3f3f; ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} ll qpow(ll a,ll n){ll r=1%P;for (a%=P; n; a=a*a%P,n>>=1)if(n&1)r=r*a%P;return r;} const double eps=1e-5; ll lcm(ll a,ll b){return a*b/gcd(a,b);} int maxn=1e5+10; int main() { int a[maxn]; int n,k; cin>>n>>k; int _min=1e9; for(int i=1;i<=n;i++) { cin>>a[i]; } if(n==k) { cout<<1<<endl; return 0; } cout<<(n-1-k)/(k-1)+2<<endl; }