ABC 174
Table of Contents
https://atcoder.jp/contests/abc174
A. Air Conditioner
https://atcoder.jp/contests/abc174/tasks/abc174_a
B. Distance
https://atcoder.jp/contests/abc174/tasks/abc174_b
C. Repsept
https://atcoder.jp/contests/abc174/tasks/abc174_c
D. Alter Altar
https://atcoder.jp/contests/abc174/tasks/abc174_d
E. Logs
https://atcoder.jp/contests/abc174/tasks/abc174_e
自力 AC.
全ての丸太の長さを $x$ 以下のする場合に必要な切る回数を $f(x)$ とする。 $f(x) \leq K$ を満たす最小の $x$ が求める答え。 これは二分探索で求めることができる。
void solve() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
ll N, K;
cin >> N >> K;
vll A(N);
rep(i, N) cin >> A[i];
auto f = [&](ll x) -> ll {
ll ret = 0;
for (ll a : A) ret += (a + x - 1) / x - 1;
return ret;
};
ll ac = INF, wa = 0;
while (ac - wa > 1) {
ll wj = (ac + wa) / 2;
if (f(wj) <= K) {
ac = wj;
} else {
wa = wj;
}
}
cout << ac << endl;
}