Minimization
問題
C – Minimization
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2022/4/12 1WAでAC。
解法
- 数列の最小値は \(1\) である。
- \(N \leq K\) のときは \(1\) 回の操作ですべて \(1\) になる。
- \(N > K\) のときは が \(1\) 回につき、\(K-1\) 個 \(1\) にすることができる。
- \(\lceil N / (K – 1) \rceil\) が答え。
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 60; // const int INF = 1001001001; int main() { int N, K; cin >> N >> K; vector<int> A(N); rep(i, N) { cin >> A[i]; } int ans = 0; if(N <= K) { ans = 1; } else { ans = (N - 1 + K - 2) / (K - 1); } cout << ans << endl; return 0; }