2025-09-01から1ヶ月間の記事一覧
https://atcoder.jp/contests/abc425/tasks/abc425_e単に を計算するだけですが、Mが素数とは限らないので割り算ができません。 素数ごとに計算すると簡単です。nの階乗が素数pをいくつ持っているかは、 で計算できます。入力例1の最初のテストだと、4は2を…
https://atcoder.jp/contests/abc425/tasks/abc425_d新たに黒く塗ったセルの隣のセルが次に塗れるセルの候補なので、それを集めて塗れるか判定します。 // Ulam-Warburton Automaton #![allow(non_snake_case)] use std::collections::HashSet; ////////////…
https://atcoder.jp/contests/abc424/tasks/abc424_ePriority Queueを使って長い棒から順に切断していくだけですが、元の棒が同じものはまとめて切らないと間に合わないけれど、端数が出るときは調整して、Priority Queueにそのまま戻さないといけません。 /…
https://atcoder.jp/contests/abc424/tasks/abc424_d1行ごとのDPにします。2進法で白に塗ったマスを1にします。それを状態として、値を白に塗った箇所の個数で、これを最小化します。 // Sum of Subarrays #![allow(non_snake_case)] //////////////////// l…
https://atcoder.jp/contests/abc423/tasks/abc423_e典型的な和を取る順番を変える問題ですね。 まず、各が何回現れるか調べます。Lを元の数から1を引いた値とすると、となります。なので、答えは、 ですが、二次式を展開してでまとめると、 となるので、3種…
https://atcoder.jp/contests/abc423/tasks/abc423_dレストラン側で実際に店を出る時間でPriorityQueueに団体客を入れればよいです。 // Long Waiting #![allow(non_snake_case)] use std::cmp::max; use std::collections::BinaryHeap; ///////////////////…
https://atcoder.jp/contests/abc422/tasks/abc422_e過半数が一つの直線に乗っていれば、点をなるべく等分になるように2分割したとき少なくともどちらかが過半数が一つの直線に乗っています。例えば7点で4点直線に乗っていたとき、7点を4点と3点に分けますが…
https://atcoder.jp/contests/abc422/tasks/abc422_d半分にしてなるべく同じになるように分配する、という処理を繰り返します。 // Least Unbalanced #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>() -> T { let mu</t:>…
https://atcoder.jp/contests/abc421/tasks/abc421_e今のダイスの状態をキープしたダイスは面の数を負にした数で表します。また、ソートして状態数を減らします。マスクが32通りあるので、その中で最大値を選びます。逆から辿って解答を得ます。 // Yacht #!…