#019参加しました。ABCもARCと同じく、公式解説があるので説明は最小限です。問題概要3つの数字が与えられるので中央値を答える。与えられる数値が3つなので、条件分岐で他の値以上、他の値以下の数値を判定しても問題無いです。単純にソートして2つ目の値を出力しても解けます。a3)のような形式に変換して出力する。文字列の先頭から文字が連続している回数をカウントして、違う文字の箇所、または文字列の終端まできたら手前の文字と回数を出力すればOKです。やろうとするとint->stringの変換でsstreamやsprintfを使う等、ちょっと一手間かかります。C++11から変換関数が追加されているので、今回はそれを使用しています。今回の問題であれば、別に変換しなくてもintのまま標準出力に出力してもOKです。問題概要ある整数を入れると、その整数に対応する違う整数を返す箱がある。箱にxを入れた場合と2xを入れた場合、同じ数値が返ってくる。N個の整数を箱に入れた時に、何種類の整数が返ってくるか答える。解法2xを入れた時とxを入れた時の値が同じなので、1度値を入れた際にその値を2で割り切れる間の数値でできる値は全て同じになります。その元になるxの値を全てhashに保存しながら、すでにその値をチェックしていないかを確認して、はいっていなければその種類の数値は今まで発生していないため、種類のカウントを1増やし、全ての数値をチェックした後のカウントの値を返せばOKです。(ただ、後で公式解説聞いてよく考えたら、値を割り終わるまで高々30回程度なので、途中結果をhashに入れなくても問題ありませんでした。問題概要ある重み付き根なし無向木がある。この木に対して2点間の距離を質問することができる。木の任意の2点間の距離の最大値(木の直径)を求める。質問の回数は100回以下とする。j,iを別個で聞かない場合)ので、全ての2点間についての距離を質問して、その最大値が答えです。満点解法の場合、木の直径を求める方法としてdouble-sweep法という方法があります。ある1点と他の点の距離を調べ、最も遠い点を探します。その点から最も遠い2点の距離が木の直径となります。(今回の問題であればN<=50なので、最大でも49+48=97回で解くことができます。)私はこのやり方を知らなかった(あるいはどこかでやっても忘れてる)ため、本番後に公式解説を聞いてやっと解けました。この方法の証明などは公式解説スライド等を参考にしてください。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。ik-fib東京のどこかの会社のエンジニア基本的に思考も行動もカオスです。WordPress.com.。