$30 off During Our Annual Pro Sale. View Details »

AtCoder Conference 2025

Avatar for shindannin shindannin
December 28, 2025

AtCoder Conference 2025

Avatar for shindannin

shindannin

December 28, 2025
Tweet

Other Decks in Programming

Transcript

  1. Google - Distributed Code Jam(終了) • 分散並列計算 ▪ 入力が10^13とかあるが、分散させることができる ▪

    分散版の二分探索など、分散独自のアルゴリズムもい ろいろある。 19
  2. Google - Hash Code (終了) • ヒューリスティック&巨大データ ▪ テストケースが1つ1つが全然違う ▪

    巨大なデータの癖を分析する必要がある。 ◦ データ分析と貪欲法が大事 20
  3. simanさんの回答 49 • 自分の中で、貪欲法における基本的な評価関数のイメージは `問題のスコア + 良い特徴量 - 悪い特徴量` という形です。そ

    して、この「良い特徴量」と「悪い特徴量」にどれだけ気づ けるかが、貪欲の強さを大きく左右すると思っています。と はいえ、何が良くて何が悪いのかを判断するのは簡単ではな く、結局はいつもビジュアライザとにらめっこしながら試行 錯誤しています。
  4. Audience Q&A The Slido app must be installed on every

    computer you’re presenting from
  5. saharanさんの回答 74 • ビームサーチでは、差分更新ビームサーチ (Euler tour beam search) を使うことで、今考えている問題(保持 すべき状態が大きい)にビームサーチが適用できるよ

    うにならないかというのを必ず考えるようにしていま す。焼きなまし法では、これといった一般的な工夫は 特にしていません。問題ごとのスコアの差分計算や近 傍の質が全ての鍵を握っている印象です。
  6. saharanさんの回答 81 • 最初 1 時間くらいは貪欲による方針をじっくり考えて、2 時 間時点で結果を見てその後の方針を決め、残り 2 時間で焼き

    なまし・ビームサーチ・貪欲を詰める、というのが理想のパ ターンですが、なかなか実現できていません。アイデアが多 すぎるときは、あまりに自明なもの、実装に時間がかかるも のを捨てて、ある程度の非自明さと実装のしやすさのトレー ドオフを考えて実装する方針を選択します。
  7. simanさんの回答 90 • スコアが伸びない、アイデアが停滞したときにやることですが、地道ですが やはり各テストケースを分析して、スコアが出るケースと出ないケースのビ ジュアライズ結果を比較していくのが大事だと思います。「どういう条件な ら高スコアになるのか」を調べられるように、様々なパラメーター(問題特 有のやつ, ex) フィールドの広さ)

    を可視化出来るようにして、高スコアを取る ための条件を整理していく感じです。また、制限を無視した場合にどうなる のかを実験したりもします。例えば制限時間が 2secなところを 200secにして 時間をかければ高スコアが取れるのかとか、何か制約を緩くしてみてその条 件なら高スコアが取れるのかとか、とにかく今上位が取っているであろうス コアはどうすれば追いつくことが出来るのかをひたすら考える感じです。