かっつのメモ帳

主に競プロ 時々日記

Baekjoon Online Judge について

日本語での説明がどこにもまとまってない気がしたので書きます。

これは 競プロ Advent Calendar 2022 の3日目です。

Baekjoon Online Judge とは

韓国のオンラインジャッジで、基本韓国語です。以下の文章ではBOJと呼称します。acmicpc.net と謎に強気な命名ですが、別に本家ICPCとの関わりは無いはず。

日本での立ち位置だと、AIZU ONLINE JUDGE が近いと思っています。基本なにかの出典元(ICPC, OI, 大学コン, etc.) が存在して、その問題が収録されている形態です。

後述しますが、BOJはやたらとその収録範囲をやたら手広く扱っていて、先に例を出したAOJと比較すると、日本の(国内予選を含めた)ICPC過去問、JOI過去問(+JOI春合宿)、JAG主催コンテストの過去問などは、一通り収録されています。

最近面白かった話を書くと、ここ1,2年のJAGの模擬地区がジャッジに追加される速度がBOJの方が1年ぐらい早かった、みたいなこともありました*1

ここまで聞いても、別にどうでもインドじゃね?みたいな気持ちになるのが大半だと思うのですが、便利な面も何かと存在するので、折角ならブログ記事にまとめておくか~というモチベで執筆することにしました。温かい目で見て欲しいです。

solved.ac について

執筆モチベの7割ぐらいはこれに起因します*2

shift(@shiftpsh)氏 が開発/デザインを担当しているサイトで、これも日本で例えると、難易度投票の出来る AtCoder Problems と表現するのが近いでしょうか。

難易度は、ブロンズ(銅)、シルバー(銀)、ゴールド(金)、プラチナ(緑)、ダイヤモンド(青)、ルビー(赤)の6つの区分で表現され、各区分にもダイヤ1,2,3…のように5つの段階があります。この数字は大きい方が難しく、計30個の難易度帯に分かれています。

ACしている問題に対して、上記の難易度及び問題ジャンルの投票をこのサイトで行う事ができます。実際に見てみた方が早いと思うので、難易度別/ジャンル別で問題を区分したページのリンクを貼っておきます。

例として今年3月に開催されたICPC横浜2021のページのスクショを紹介します*3。問題番号の横に表示されているのが、投票によって定められた難易度です。

(一応書いておくと、設定で表示の有無を切り替えることも可能です)

難易度投票のガイドライン

ここは読み飛ばして貰って構いません(オタク向け?)。難易度投票のガイドラインのページに辿りつくのが中々難しいと思うので、ここに記しておきます。

https://solved.ac/guideline

難易度帯の可視化

Codeforcesと難易度帯の関連の目安

Codeforces solved.ac
Div.2 A Bronze V — Silver III
Div.2 B Silver IV — Gold II
Div.2 C-D (Div.1 A) Gold III — Platinum III
Div.1 B Platinum V — Diamond V
Div.1 C Platinum II — Diamond II
Div.1 D Diamond IV —

BOJの基本的な使い方

基本的には韓国語をgoogle翻訳すれば使えると思います。

トップページ

google翻訳*4、最高~!!!各項目の日本語訳を書く手間が省けました。

  • 会員登録/ログイン:初回のアカウント登録だけ左で、2回目以降はログインを押せば大丈夫です。登録方法は特に難しい箇所はないと思うので、大丈夫だと思います。

  • 問題:カーソルを合わせると色々表示されます。基本ここも翻訳を読めば対応出来そうで、サイトの下の方に同じようなリンク先が掲載されています。

  • 問題集:BOJではテーマに沿ったオリジナルの問題集を作成・公開することが出来ます。盛り上がっているかというと微妙に感じます(3年前に見た時と殆ど内容が変わっていない気がする)が、koosaga氏が複数問題集を公開しているので、興味があれば覗いてみると面白いかもしれないです。

  • 大会:韓国内での有志コンテストが定期的に開催されています。問題は韓国語ですが、アカウントがあれば基本誰でも参加できるはずなので、コンテスト狂の皆さんにオススメです(clistには掲載されてないシリーズ)。今確認したら、年末年始まで7回コンテストがあるらしいです。

  • 採点状況:直近のジャッジ全体の提出一覧です。人少ない時間帯に精進している時、こういうページ眺めるの楽しいよね。

  • ランキング:AC数に準拠したランキングです。他にも所属別にACした問題の和集合を取ったランキングや、期間内(直近の週や月や年)のみのランキングなどがあって面白いなと思いました。特に所属別ACランキングは個人的お気に入りです*5

  • 掲示板:色々スレッドが立ってますが、基本見なくて大丈夫だと思います。一応もう少し書いておくと、hackケースの追加などは、ここで提案出来る雰囲気があります。

  • グループ:見たことないです。

  • ブログ:CFブログみたいなものですが、そもそも書き込みがあまり存在しないので、興味があれば1回ざっと眺めるぐらいで十分な気がします。

  • 講義:見たことないです。向こうの教育機関に採用されていそうな雰囲気。

  • 虫眼鏡マーク:問題の検索が可能です。タイトルだけでなく、問題文でも検索が効くので結構便利だと思います。具体的にいつ便利?と問われると難しいですが*6

  • 設定:ログイン後に右上に出てきます。

  • 地球儀マーク(だと長い間思ってたけどよく見たら謎):これもログイン後右上に出てきて、通知がここに表示されます。具体的な通知内容としては、他人が自分のコードを読んだ時や、自分のコードがリジャッジされた時に通知がきます。

問題ページ

https://www.acmicpc.net/problem/1000

これも韓国語を翻訳済みのページのスクショです。

  • 提出:ここでコードの提出を行うことが出来ます。提出言語は色々使える(雑)のですが、問題によって提出言語が縛られていることもあるので注意です(BOJオリジナル問題や、有志コンやる時以外は気にしなくて良いです)。

  • 当たった人:ACの意。統計情報メイン。

  • ショートコーディング:コードゴルフの順位が表示されています。

  • 再採点結果:リジャッジ情報がここで確認できます。

  • 採点状況:該当問題の提出一覧が確認できます。CFのstatusと同じ感じです。注意があって、このOJでは基本他人のコードは自分がACしていないと見ることが出来ません。ただ例外は存在して、基本非公開/ACしていなくてもリンクを知っていれば閲覧可能、といった設定も可能です。これらはサイト上部の設定から変えられるはずです。

  • 私の提出:自分の提出一覧が確認できます。

  • 難易度の貢献:solved.ac の難易度投票のページに飛ぶことができます。ACしてからじゃないとリンク先には飛べません。

  • 質問を検索:トップページの項で説明した掲示板の、該当問題に関する質問一覧が表示されます。

  • 韓国語(☆の横):韓国語と英語が両方用意されている問題では、ここを押すと言語の切り替えが可能です。デフォルトが韓国語なので気付きにくいです。

想定Q&A

Q.結局わざわざこのOJを使う意味はあるの?

A.強さを求める上でこのOJに手を出す大きな理由はないと思っています。が、特にOIやICPC系の問題を埋めている場合、AC管理の意味合いで便利なのかなと感じています。

CF Gymを触ったことある人なら分かると思うのですが、コンテスト追加順もバラバラで、検索機能はあるものの、とても使いやすいとは言えないと思います(Gymにない5hを探そうとすると更に大変)。

また、5hのupsolveの時に、チームメイトが担当していて自分がACしていない問題の管理にも使っていました。あと難易度投票の結果を見て、upsolveの基準にもなるかなと考えています。

Q.難易度投票を推してるけど、上の方の問題投票する人っているの?

A.koosaga様や、xiaowuc1様や、mitnegativeinfinity(ksun)様などをよく見かける印象です。日本人変なコンテスト好きそう(偏見)で、難易度投票も好きそう(偏見)なイメージがあるので、ワンチャン流行らないかなと思って書いてます。

Q.問題の扱ってる幅多いって書いてるけど、結局どこで探せばいいの?

https://www.acmicpc.net/category

ここ見れば基本的に解決すると思います。よく使いそうな項目を列挙しておくと、

終わりに

何を/どこまで詳しく書くのか分からないまま、見切り発車で書き始めてしまったのでまとまりのない記事になってしまったかもしれません。もし分からないことがあれば、知り合いの韓国の競技プログラマーに問い合わせるか、僕(@_KKT89)にリプしてくれれば、質問に応えられると思います。

明日4日目の担当は鶏肉さんで、Hallの結婚定理についての記事らしいです。お楽しみに!!!(僕が遅刻しているせいで、既に公開されています。誠に申し訳ありません。)

もう一つおまけで、帰ってきた AOJ-ICPC Advent Calendar 2022 というものをやってます。共にAOJ-ICPCを埋めて最高の12月にしような。

ここまで読んで頂いて、ありがとうございました!

*1:AOJは大学運営、BOJは競プロオタクがこの辺の運用をしていそうな雰囲気、という違いは存在するので、仕方ないと思っています

*2:この存在を前から知ってた日本人が、どれぐらい居たのかは個人的に興味ありです

*3:なんか良い例ないかなーって思って見たらE以外の投票済んでて、お~ってなった

*4:そういえばDeepLは韓国語に対応していないので、韓国語の文献を読む時は基本Google様に頼ることになります

*5:大学1年の冬ぐらいに、韓国の大学や企業が並ぶ中、Waseda University の順位を上げまくる遊びにハマっていたことがあります

*6:明らかに既出だろ!!という問題タイトルの時に、ここ検索かけに行くの割とやってるんですが、1回も勝利経験はありません 現場からは以上です