AtCoder Beginner Contest 366 の問題解説と実装

はじめに 今回のコンテストでは問題Eに大部分の時間を費やすことになり、残り15分でようやく正解にたどり着くという危ない場面でした。緑色レベルの問題にも苦戦するようでは、まだまだ実力不足を感じます。 A - Election 2 高橋君と青木君のどちらかが過半数の票を獲得したかどうかを判定するシンプルな問題です。 #include <iostream> using namespace std; ...

6月4日 17:22 投稿

競技プログラミング問題精選: 考察技法と実装(ICPC/APIO/NOI対策)

P6880 JOI 2020 Final オリンピックバス 有向グラフが与えられる。辺を通るコスト \(C_i\)、1本の辺を反転させるコストを \(D_i\) とする。頂点 \(1\) から \(n\) へ、さらに \(n\) から \(1\) へ移動するとき、辺の反転を高々1回まで許したときの最小コスト和を求めよ。 全ての辺に対して反転を試すのは非効率なので、影響を解析する。\(f(s,t)\) を元のグラフでの \(s\) ...

6月3日 16:05 投稿

循環配列における次の大きな要素の検出と「雨水を貯める」問題のアルゴリズム解説

503. 循環配列における次の大きな要素 II (Next Greater Element II) 循環配列(最後の要素の次が最初の要素となる配列)が与えられた場合、各要素に対して「次に大きい要素」を見つける問題です。要素xの次に大きい要素とは、配列を巡回順で走査した際、xの後に現れる最初のxより大きな数値を指します。そのような数値が存在しない場合は-1を出力します。 解法アプロー ...

5月16日 17:53 投稿

ICPC 2018 横浜大会における主要アルゴリズムの解説

2018年に開催されたICPCアジア地区予選横浜大会の出題問題より、いくつかの典型的な実装手法とアルゴリズムの考え方を解説します。 1. 文字列と数値の混合ソート 文字列中に含まれる数値とアルファベットを個別に識別し、辞書順および数値の大きさに基づいた比較を行う問題です。主なロジックは以下の通りです。 両文字列が完全に一致する場合は対象外とする。 ...

5月16日 06:48 投稿