Upgrade to Pro — share decks privately, control downloads, hide ads and more …

競技プログラミング入門.pdf

axpensive
January 13, 2020

 競技プログラミング入門.pdf

axpensive

January 13, 2020
Tweet

Other Decks in Programming

Transcript

  1. 僕と競技プログラミング • C++を勉強してみたい ◦ 作りたいものがないから競プロで練習 • AIZU ONLINE JUDGEで勉強 ◦

    http://judge.u-aizu.ac.jp/onlinejudge/ ◦ 続かず... • Atcoderでコンテストに数回参加する。 ◦ 仕事で役に立たないと感じる ◦ アカウント削除 • あるきっかけで再開
  2. 競プロ界隈の登場人物 • ちょくだい ◦ AtCoder(株)代表取締役社長 ◦ C#使い • tourist ◦

    人生N周目のプレイヤー ◦ Atcoder一位 ◦ 数々のコンテストで実績を残す
  3. コンテストの流れ • コンテストが告知される • コンテスト開催ページで参加するボタンを押す ◦ 企業コンテストは個人情報を記入 ◦ 途中参加可能なはず ...

    • 開催時間内に問題を解く ◦ 開始時間に着席する必要はないし、途中退席も可 • マイページでコンテスト結果を観てほくそ笑む
  4. 問題の解き方 • 問題の読み替え • 分からなかったら ◦ 調べる ▪ 数学的知識 ▪

    アルゴリズム ▪ プログラミング言語仕様 • 例題のテストケースを通す ◦ ローカル環境 ◦ Atcoderのコードテスト
  5. コンテストの種類(基本) • AtCoder Beginner Contest (ABC) ◦ 初心者はこれ ◦ レートの上がり方に制限がある

    • AtCoder Regular Contest (ARC) ◦ ABCできたらやるといい ◦ 最近開催されてない • AtCoder Grand Contest (AGC) ◦ 別次元
  6. コンテストの種類(特別) • 企業コンテスト ◦ 難易度不明 ◦ 採用で優遇される • 特殊コンテスト ◦

    C++の練習問題のみ ◦ DP(動的計画法)が使える問題に絞ったもの • バーチャルコンテスト ◦ 過去に実施されたコンテストを時間制限を掛けて問題を解く
  7. ABC問題の傾向 • A,B問題 ◦ プログラミング言語が使えるか ◦ 二重for文 • C, D問題

    ◦ 一気に難しくなる印象 ◦ 数学的知識 ◦ 代表的なアルゴリズム ◦ 処理時間を意識する • E, F問題 ◦ C, D問題と同じだと思うけど、解いたことない ...
  8. 回答が却下された時対応 • CE (Compilation Error), RE (Runtime Error) ◦ デバッグし直す

    • WA (Wrong Answer) ◦ テストケースを増やしてデバッグ。 • TLE (Time Limit Exceeded) ◦ 時間の掛かってそうな箇所を方針レベルで見直す。 ◦ 些細なことが影響していると疑わない ▪ VectorとArrayで処理速度が変わるとか • IE (Internal Error) ◦ 最近はジャッジに時間がかかって unrated • MLE (Memory Limit Exceeded), OLE (Output Limit Exceeded) ◦ 遭遇したことない...
  9. 僕の開発環境 • 筆記用具 ◦ ぺんてる シャープペン スマッシュ 0.5mm Q1005-1 ブラック

    ◦ 大学ノート • PC ◦ Mac Book Pro • 仮想環境 ◦ Parallels(買い切り) ◦ Win10 • IDE ◦ Visual Studio • コンパイラ ◦ VC++ ▪ gccに変える予定
  10. なぜVisual Studioか • 会社でよく使っていたから • ステップ実行、クイックウォッチなどがデフォルトでできる。 • VSCodeは苦手 ◦ Visual

    Studioにと同等の機能を追加するのに労力に手間がかかる ◦ よくわかってないので、参考記事以上の拡張が出来ない • Xcode大っ嫌い ◦ ステップ実行時のクイックウォッチが見にくい ◦ IOSエンジニアに絶対なりたくない
  11. C++コンパイラの種類 • Windows ◦ VC++ ◦ gcc(MinGW) • Mac ◦

    clang ◦ gcc(Homebrew) Gccは#include <bits/stdc++.h>が使えるから便利!!! コンテストではコンパイラを選べる
  12. 競プロをどこまで極めるか • 目指す色は水色 ◦ C, D問題が簡単に解けるレベル (だったはず) ◦ 採用試験を突破できればいい •

    企業コンテスト、AtCoderJobsで転職できたらいいな • エンジニアとして恥ずかしくない程度
  13. 過去問の進め方 • 時間を計って解く ◦ ノートを使う ▪ 方針を立てる ▪ 例題のサンプルを手で動かして解く •

    解答を見る ◦ 公式の回答 ◦ 個人ブログの解説 ▪ Atcoder + 問題名で検索 • 復習 ◦ AtCoder Problemsおすすめ
  14. モチベーションの保ち方 • コンテストに参加する ◦ 自分の実力がグラフで表示される • AtCoder Problemsを使う ◦ https://kenkoooo.com/atcoder#/table/

    ◦ 円グラフで達成感を得られる ◦ 自分の実力に合った問題を探す • 自分が理解しやすい解説を読む ◦ 公式のyoutube動画 ◦ けんちょんの競プロ精進記録 ▪ http://drken1215.hatenablog.com/