Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
競技プログラミング入門.pdf
Search
axpensive
January 13, 2020
Programming
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
競技プログラミング入門.pdf
axpensive
January 13, 2020
Other Decks in Programming
See All in Programming
自分的「カンファレンスの楽しみ方」
syumai
0
200
信頼性の目標を誰も求めてない
shubox
0
510
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
120
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
180
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
610
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
140
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
240
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
140
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
450
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
130
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
150
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.8k
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7.1k
Abbi's Birthday
coloredviolet
3
9.9k
Building the Perfect Custom Keyboard
takai
2
870
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
730
The SEO identity crisis: Don't let AI make you average
varn
0
560
Exploring anti-patterns in Rails
aemeredith
3
500
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
For a Future-Friendly Web
brad_frost
183
10k
Transcript
競技プログラミング入門 Atcoderメイン
このLTの内容 話すこと • 競技プログラミングとは • Atcoderの概要 • 問題を解くために必要なこと 話さないこと •
アルゴリズム • 実装テクニック
自分について
僕と競技プログラミング • C++を勉強してみたい ◦ 作りたいものがないから競プロで練習 • AIZU ONLINE JUDGEで勉強 ◦
http://judge.u-aizu.ac.jp/onlinejudge/ ◦ 続かず... • Atcoderでコンテストに数回参加する。 ◦ 仕事で役に立たないと感じる ◦ アカウント削除 • あるきっかけで再開
競プロを再開した理由 • 優秀なWebエンジニアがコーディング試験のある会社に全落ちした • 転職の準備 • シェアハウス住民が競プロを始めた • 新規アカウントでのコンテスト参加してない。 ◦
C問題ある程度埋めたらやろうかな
Atcoder概要
競プロ界隈の登場人物 • ちょくだい ◦ AtCoder(株)代表取締役社長 ◦ C#使い • tourist ◦
人生N周目のプレイヤー ◦ Atcoder一位 ◦ 数々のコンテストで実績を残す
コンテストの流れ • コンテストが告知される • コンテスト開催ページで参加するボタンを押す ◦ 企業コンテストは個人情報を記入 ◦ 途中参加可能なはず ...
• 開催時間内に問題を解く ◦ 開始時間に着席する必要はないし、途中退席も可 • マイページでコンテスト結果を観てほくそ笑む
基本的な問題の形 1. 文字列を標準入力 2. 自作ロジックで処理 3. 文字列を標準出力 やらないこと • ファイルの処理
• APIを叩く • DB操作
問題で求められるもの 1. 問題で求められる解を出力する。 a. ゴミロジックでもいい 2. 処理時間(C問題以降ハマる) 3. メモリ(まだ意識したことはない) ※AC
= Accepted いっぱいACしようぜ!!!
問題の解き方 • 問題の読み替え • 分からなかったら ◦ 調べる ▪ 数学的知識 ▪
アルゴリズム ▪ プログラミング言語仕様 • 例題のテストケースを通す ◦ ローカル環境 ◦ Atcoderのコードテスト
コンテストの種類(基本) • AtCoder Beginner Contest (ABC) ◦ 初心者はこれ ◦ レートの上がり方に制限がある
• AtCoder Regular Contest (ARC) ◦ ABCできたらやるといい ◦ 最近開催されてない • AtCoder Grand Contest (AGC) ◦ 別次元
コンテストの種類(特別) • 企業コンテスト ◦ 難易度不明 ◦ 採用で優遇される • 特殊コンテスト ◦
C++の練習問題のみ ◦ DP(動的計画法)が使える問題に絞ったもの • バーチャルコンテスト ◦ 過去に実施されたコンテストを時間制限を掛けて問題を解く
ABC問題の傾向 • A,B問題 ◦ プログラミング言語が使えるか ◦ 二重for文 • C, D問題
◦ 一気に難しくなる印象 ◦ 数学的知識 ◦ 代表的なアルゴリズム ◦ 処理時間を意識する • E, F問題 ◦ C, D問題と同じだと思うけど、解いたことない ...
回答が却下された時対応 • 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) ◦ 遭遇したことない...
開発環境について
僕の開発環境 • 筆記用具 ◦ ぺんてる シャープペン スマッシュ 0.5mm Q1005-1 ブラック
◦ 大学ノート • PC ◦ Mac Book Pro • 仮想環境 ◦ Parallels(買い切り) ◦ Win10 • IDE ◦ Visual Studio • コンパイラ ◦ VC++ ▪ gccに変える予定
なぜVisual Studioか • 会社でよく使っていたから • ステップ実行、クイックウォッチなどがデフォルトでできる。 • VSCodeは苦手 ◦ Visual
Studioにと同等の機能を追加するのに労力に手間がかかる ◦ よくわかってないので、参考記事以上の拡張が出来ない • Xcode大っ嫌い ◦ ステップ実行時のクイックウォッチが見にくい ◦ IOSエンジニアに絶対なりたくない
なぜC++か • 使わないと処理速度でTLEになる。 ◦ Atcoderは言語別に処理時間を設定してない。 ◦ 公式の解説動画で言及されてる • 公式、ユーザーの回答がC++が多い •
アルゴリズムの解説でC++が多い
C++コンパイラの種類 • Windows ◦ VC++ ◦ gcc(MinGW) • Mac ◦
clang ◦ gcc(Homebrew) Gccは#include <bits/stdc++.h>が使えるから便利!!! コンテストではコンパイラを選べる
Atcoderへの向き合い方
競プロをどこまで極めるか • 目指す色は水色 ◦ C, D問題が簡単に解けるレベル (だったはず) ◦ 採用試験を突破できればいい •
企業コンテスト、AtCoderJobsで転職できたらいいな • エンジニアとして恥ずかしくない程度
競技プログラミングのメリデメ メリット • 採用試験で有利になれる • 時代に左右されにくい力が手に入る • エンジニアにマウントが取れる • 機械学習系の仕事で役に立つ
デメリット • 費用対効果が低い ◦ すべての仕事に競プロが役に立つわけではない。
過去問の進め方 • 時間を計って解く ◦ ノートを使う ▪ 方針を立てる ▪ 例題のサンプルを手で動かして解く •
解答を見る ◦ 公式の回答 ◦ 個人ブログの解説 ▪ Atcoder + 問題名で検索 • 復習 ◦ AtCoder Problemsおすすめ
モチベーションの保ち方 • コンテストに参加する ◦ 自分の実力がグラフで表示される • AtCoder Problemsを使う ◦ https://kenkoooo.com/atcoder#/table/
◦ 円グラフで達成感を得られる ◦ 自分の実力に合った問題を探す • 自分が理解しやすい解説を読む ◦ 公式のyoutube動画 ◦ けんちょんの競プロ精進記録 ▪ http://drken1215.hatenablog.com/
無双してる人を見て落ち込まないために 無双してるひとは大体こんなひと • 他コンテストで長い間活躍されている • CSの学位を持っている • 大学院生で数学を専攻してる などなど 長く続ければ何者かになれるよ、きっと
Finish 目標を決めて 程々に楽しんでください!