• 検索結果がありません。

競技プログラミングのススメ

N/A
N/A
Protected

Academic year: 2021

シェア "競技プログラミングのススメ"

Copied!
24
0
0

読み込み中.... (全文を見る)

全文

(1)

競技プログラミングのススメ

(2)

⽬次

u

競技プログラミングとは

P3

u

競技プログラミングの利点

P6

u

競技プログラミングの始め⽅

P14

u

実演

P20

(3)
(4)

競技プログラミングとは

u

お題を解くプログラムを作成する競技

u

⼤会が頻繁に開かれている

u 賞⾦付きの⼤会などもある

u

速く正確に⾼度なコードを書く知識が求められる

u

でも、1個当たりのコードは100⾏もいかない場合が殆ど

u 数学コンテストに近い感じ、証明の時間の⽅が⻑い

(5)

競技プログラミングとは

u

⼤きく部⾨に分かれている

u

アルゴリズム部⾨

u お題と⼊⼒に対し、⾼速かつ正しい出⼒を返す関数を作成する競技 u 計算量などを考えて、適切なアルゴリズムを適切に使う⼒が求められる u 短時間(2時間など)で終わるので、参加が楽 u 私が今回紹介するのはこっち u

マラソン部⾨

u お題と⼊⼒に対し、なるべく最適な答えを返す競技 u 厳密な答えを求めることは厳しいので、よりそれっぽい、答えに近いものを出せる⽅針を⽴てれる かが重要 u ⻑時間(2週間など)になりがちなので、ペース配分に注意

(6)
(7)

競技プログラミングの利点

u

実⾏時間(計算量)を⾒積もる⼒

u

制約: 2秒とかが多いので、これが⾒積もれなきゃ話にならない

u

主要なアルゴリズムも⾃然に覚える

u そういうアルゴリズムは⾼速だから名前がついてるので

u

コードを正確に書く⼒

u

競プロでは、間違えるとペナルティが課されることが多い

u よってノーミスでコードを書き、万が⼀間違えた時に⾼速でデバッグする必要 がある u 脳内デバッグ⼒が試されるよ︕

(8)

競技プログラミングの利点

u

アルゴリズムの応⽤に対する知識

u

使いこなせなきゃ意味なくない︖

u

例えばGitのような巻き戻したりできる機能

u 永続データ構造というものを知っていれば、差分記録で管理できる︕ u

例えばはてなブログの⾃動で特定の単語に説明を付ける機能

u Trie⽊とAho-Corasick法を知っていれば⾼速な実装ができる︕ u

その他⾊々な場⾯で使えるよ

u 学校課題でゲーム作った時も、アルゴリズム知識を3個以上使いました u 名前のないアルゴリズムも含めるともっと多いかも

(9)

競技プログラミングの利点

u

競技プログラミングには⼤会がある︕

(10)

競技プログラミングの利点

u

主要な⼤会

u

Google Code Jam

u Google社主催 u 出ると、成績に応じて選考にも優遇がかかるのでちょっと有利 u

TopCoder Open

u TopCoder社主催 u 前は最も知名度が⾼く権威のあるコンテストだった u 最近、⼈数が減りすぎて落ち⽬じゃない︖

(11)

競技プログラミングの利点

u

ACM-ICPC

u

⼤学対抗の⼤会、3⼈チーム戦

u 理科⼤からも出てるよ︕弱いけど u RICORA⾔語班でメンバー募集するので、希望者は後で出てきて〜 u 東⼤が毎年世界⼤会の⾦メダル取ってくる強さ

(12)

競技プログラミングの利点

u

企業主催の⼤会

u

求⼈を兼ねた⼤会が秋〜冬に多数開催される傾向がある

u

賞⾦も付くので美味しい

u

全国統⼀プログラミング王決定戦

u ⽇本経済新聞社主催 u 本戦参加者は200名、賞⾦も1位は50万などかなり豪華 u ちなみに私(thirno3153)は167位なので賞⾦圏外でした>_<

(13)

競技プログラミングの利点

u

就活に有利︕

u

競プロerはコードを書く⼒が⾼いので、採⽤に有利になる

u ちゃんと履歴書にAtCoderのレートを書こう︕ u IT以外を受けるときは⽌めておこう u

そもそも競プロのレートで就活できる

u paizaやAtCoderJobsといったサービスが存在する u ⽬的の会社が無くても泣かない u

よくIT系会社にあるコーディング試験は競プロそのもの

u つまり競プロは試験対策だった……︖

(14)
(15)

競技プログラミングの始め⽅

u

今回はAtCoderを通じて説明します

u

AtCoder

とは

u

AtCoder

社が主催する、競技プログラミングコンテストサイト

u

⽇本で唯⼀の⼤会ありコンテストサイトだよ︕

u Yukicoderとかは有志なのでちょっと違う u もちろん、⽇本語で参加できるよ︕

(16)

競技プログラミングの始め⽅

u

AtCoder

の登録⽅法

u

まず、

https://atcoder.jp/?lang=ja

のページを開きます

u

右上にある新規登録をクリックしましょう︕

u

新規登録の⼊⼒欄を埋めて作成します

u

アカウントができたよ︕

(17)

競技プログラミングの始め⽅

u

AtCoder

でできること

u

過去問を解く

u AtCoder ProblemsやAtCoder Scoresも是⾮使ってみよう︕

u

コンテストに参加する

u 基本的に、⼟曜か⽇曜の21:00〜22:40に開催されるよ u 成績に応じてレートというものが付くよ

u レートが⾼いほど優秀だよ︕

(18)

競技プログラミングの始め⽅

u

コンテストの種類

u

公式コンテスト

u AtCoder社が主催するコンテストで、⼤きく分けて4種類 u AtCoder Beginner Contest (ABC)

u 初⼼者向け、最初の問題とかは⾮常に簡単だよ︕

u AtCoder Regular Contest (ARC)

u 中級者向け、後半が解けるとレッドコーダーにもなれる……︖

u AtCoder Grand Contest (AGC)

u 超級者向けだけど、誰でも参加できるし気軽に挑むと良いよ

u 天才を求めるコンテストなので、解けなくても気にしないのが⼤事

u AtCoder Petrozavodsk Contest (APC)

(19)

競技プログラミングの始め⽅

u

コンテストの種類

u

企業コンテスト

u さっき⾒た全統王コンとか、ああいうの u 賞⾦付きが多め、予選通過すると本戦は交通費貰って現地で〜というのも多い u ⼈の⾦で飯が⾷えるよ︕ u

有志コンテスト

u 名前通り、有志が作ったコンテスト u AtCoder社に責任が無いコンテストなので、問題の質は保証できないです u でもやっておくと⾯⽩いんじゃない︖

(20)
(21)

解説

u

⿊いマスが段々周囲に広がっていく

u

全部のマスが⿊くなるまでに何回操作が⾏われるか

u

1 ≤ 𝐻, 𝑊 ≤ 1000

(22)

解説

u

⿊いマスを実際に広げていく

u

1

ターン後に塗られるマスが分かればいい

u

前のターンで塗ったマスは、周りが⿊で囲まれていることが保証さ

(23)

解説

u

第𝑖回⽬の操作で塗ったマスの集合を𝑆

)

とする

u

𝑆

*

は最初から塗ってあったマスね

u

この時、𝑆

)+,

は𝑆

)

の周囲4⽅向かつ∑

./*

)

𝑠

.

に含まれないマス

の集合

u

./*)

𝑠

.

は毎回纏めておけば良い、例えば上書き処理とかで

u

./*)

𝑠

.

は今まで塗られたマスなので、合計が𝐻𝑊になれば終了

u

操作の度に、実際に塗られるマス程度しか計算しない

u

最⼤で𝐻𝑊マスしか塗られないので、O(𝐻𝑊)

(24)

解説

u

要するに、多点BFSをすればいい

u

Queue<Integer, Point> que

を(塗ったターン, 塗る座標)とす

u

最初は全ての⿊い点をターン0で追加する

u

que

の先頭を取りだし、周囲4マス(かつ塗ってない場所)を

que

に追加することを繰り返す

参照

関連したドキュメント

⑥'⑦,⑩,⑪の測定方法は,出村らいや岡島

Technical Delegates 技術代表 Rule 6 of the Competition Rules or CR6.. Medical Delegates 医事代表 Rule 7 of the Competition Rules

バドミントン競技大会及びイベントを開催する場合は、内閣府や厚生労働省等の関係各所

本ハンドブックは、(公財)日本バスケットボール協会発行の「バスケットボール競技規則 2022」及び「テーブ

※ただし、第2フィールド陸上競技場およびラグビー場は電⼦錠のため、第4F

今年度は、一般競技部門(フリー部門)とジュニア部門に加え、最先端コンピュータ技術へのチ ャレンジを促進するため、新たに AI

質問内容 回答内容.

 The purpose of this study was to ascertain the results of and issues with talks and exibition organized by Kokushikan University and the City of Tama and approved by the Tokyo