蟻本 上級編 練習問題 解法メモ集

蟻本の「練習問題」のところの問題を埋めました。 問題は面白いものがそろっているのですが、ほとんどが POJ の問題であり、

  • 実行が遅く、TL が厳しい
  • コンパイラが非常に古い(C++98)
  • 一部の制約が書いていないため、エスパーする必要があることがある

などとつらい要素が多いです。本を読んだ後に練習したい場合、AtCoder 版!蟻本 (上級編)をやったりする方が良いと思います。

ただ、以下のように色々使える手はあって、埋めようと思うと意外と何とかなる印象です。

  • POJ 以外のジャッジに同じ問題があるならそちらに提出する
    • 半分程度の問題は他のジャッジに存在する
  • ChatGPT に古いバージョンの C++の書き方に直してもらう
  • clangd のようなツールを使って CE になりそうなところを指摘してもらう

https://vjudge.net/problem でタイトルを検索すると他のジャッジが使える場合も多いです。いろいろなアカウントを作るのは面倒なので、vjudge から bot 提出するのが多分楽です。 ただし、Baekjoon(BOJ)のように vjudge の bot をサポートしていなく、自分のアカウントを作る必要のある OJ もあります。 なお、Baekjoon(BOJ)には既に本家には提出できない GCJ の問題があり、蟻本の GCJ の章の問題を解くことができます。

基本的には蟻本の対応する部分は読んでいる前提で、アルゴリズムの説明などは入れていません

なお、記事はObsidian(Markdownで書けるノートアプリ的なもの)から適当なPythonスクリプトで変換しているため、一部表示がおかしくなっている可能性があります。

4-1 より複雑な数学的問題

4-2 ゲームの必勝法を編み出せ!

4-3 グラフマスターへの道

4-4 厳選! 頻出テクニック(2)

4-5 工夫を凝らして賢く探索

4-6 分けて解いてまとめる!“分割統治法”

4-7 文字列を華麗に扱う