2023-05-11 いろんなくるま / ARC050 B を解いた
「いろんなくるま!」と、子どもが『はたらくくるま』の動画を観たがるので、『マッドマックス 怒りのデス・ロード』を観せておいた。
(おおむね nostr に類似の投稿済み)
- ARC050 B - 花束 (AtCoder Regular Contest 050 B問題)
https://atcoder.jp/contests/arc050/tasks/arc050_b
- https://atcoder.jp/contests/arc050/submissions/41306763
- 花束の個数 (答え) を二分探索する
- 作ることのできるものとできないものに二分する
- 花束の個数を X とする
- どちらの花束を選んでも赤・青を 1 本ずつ使うとすることで 1 の扱いが楽になる
- 先に赤い花および青い花から X 本を引く
- 赤い花が x - 1 本でひとつめの花束をつくれる
- 青い花が y - 1 本でふたつめの花束をつくれる
- 足せばつくれる花束の個数の合計になる、これが X 以上なら作ることができる
use proconio::input;
fn main() {
input! {
r: usize,
b: usize,
x: usize,
y: usize,
}
let mut ok = 0_usize;
let mut ng = r + b;
while ng - ok > 1 {
let mid = ok + (ng - ok) / 2;
if (mid <= r) && (mid <= b) && (((r - mid) / (x - 1)) + ((b - mid) / (y - 1)) >= mid) {
ok = mid;
} else {
ng = mid;
}
}
let ans = ok;
println!("{}", ans);
}
今日のコミット。