\rfloor\)になる。4種類」なので、黄色(Y)が1つでもあれば4種類、そうでなければ3種類となる。組み合わせの条件は以下の2つです。どれかから始まっている同じ文字から始まる名前を持つ人が複数いない1つ目の条件より、入力のうちM,A,R,C,Hで始まらないものは無視して良いことがわかります。2つ目の条件より、3人の組み合わせとして有効なのは、(Mで始まる人、Aで始まる人、Rで始まる人)(Mで始まる人、Aで始まる人、Cで始まる人):のような組み合わせになります。Rで始まる人の人数で求めることが出来ます。よって、最初に以下の5つの数を計算しておき、そこから3つを取り出した時の組み合わせ毎にその積をとって、その総和を出せば解になります。実装rubyで組み合わせを求める場合、配列のcombinationを使うと簡単です。online.atcoder.jp解法LからRへDずつ移動した際の距離の総和を求める問題です。L、Rは最大9万なので、距離を求めるのが1回であれば、Dずつ移動しながら移動距離の総和を出せば良いです。与えられるL、Rの組み合わせの数Qは最大105なので、都度Dずつ移動しながら距離を計算するのは時間がかかりすぎます。よって、L、Rが与えられた時に定数時間で移動距離を出す方法を考える必要があります。考え方のポイントとしては、Dは常に一定である、という点です。入力例1のように、Aが1〜9でDが2である場合、移動パターンは以下の2種類しかありません。8よって、奇数の場合は1からの累積距離、偶数の場合は2からの累積距離、を事前に求めておくことで、任意の点間の移動距離を定数時間で求めることが出来ます。計算すれば、4から8への移動距離を求めることが出来ます。左から順にpiをみていきます。観光スポットに行かないケースを毎回計算していると、O(n^2)の計算量になってしまいます。bi)の組み合わせについて、a→bの順番でソートします。久しぶりにリアルタイムで参戦できたので結果のまとめです。なる文字列Sが与えられる。文字列に変換するための最小回数を求める。今度こそは水色へ、と意気込んだABC113。コメントをキャンセルメールアドレスが公開されることはありません。