Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
競プロへの誘 -いざな-
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
U76NER
May 16, 2022
Programming
0
940
競プロへの誘 -いざな-
WASD Inc. LT会(仮)
2022-03-25
U76NER
May 16, 2022
Tweet
Share
More Decks by U76NER
See All by U76NER
JSのクラスの後ろ向きな話
u76ner
0
130
GASええやん
u76ner
1
90
mockdateええやん
u76ner
0
310
Other Decks in Programming
See All in Programming
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.3k
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
ぼくの開発環境2026
yuzneri
0
220
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
560
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
730
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
190
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
960
Implementation Patterns
denyspoltorak
0
280
AI巻き込み型コードレビューのススメ
nealle
1
210
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
190
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.8k
Featured
See All Featured
Navigating Team Friction
lara
192
16k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
210
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
49k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
320
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
HDC tutorial
michielstock
1
380
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
Transcript
競プロへの誘 -いざな- LT会(仮) 2022/03/25 u76ner
競プロとは 2 - 競プロとは - 「競技プログラミング」の略 - 競技プログラミングでは、参加者全員に同一の課題が出題され、より早く与えら れた要求を満足するプログラムを正確に記述することを競う。
(Wikipedia)
競プロとは 3 - 有名なやつの例 - AtCoder
競プロとは 4 - 有名なやつの例 - AIZU ONLINE JUDGE(AOJ)
競プロとは 5 - 問題の入力に対して解答に制限時間内に解答する - だいたい2秒とかが多い気がする(↓ AtCoderでの例)
競プロとは 6 - 問題の入力に対して解答に制限時間内に解答する
競プロとは 7 - 問題の入力に対して解答に制限時間内に解答する - 問題を解くこと自体は原理的にできるが、 ナイーブに実装すると現実的な時間で解くことが不可能 であることが多い
計算量の例 8 - 例) - a n+2 = a n+1
+ a n , a 1 = 1, a 2 = 1 - このとき、a 40 , a 100 を求めよ - いわゆるフィボナッチ数列
計算量の例 9 - ナイーブな実装
計算量の例 10 - ナイーブな実装 - a 100 が計算できない
- 計算時間 - a 40 : 604 ms - a 45 : 6,808 ms - a 50 : > 1 min
計算量の例 11 - 改善点 - a 50 = a
49 + a 48 = (a 48 + a 47 ) + (a 47 + a 46 ) = (a 47 + a 46 ) + (a 46 + a 45 ) + (a 46 + a 45 ) + (a 45 + a 44 ) = …
計算量の例 12 - 改善点 - a 50 = a
49 + a 48 = (a 48 + a 47 ) + (a 47 + a 46 ) = (a 47 + a 46 ) + (a 46 + a 45 ) + (a 46 + a 45 ) + (a 45 + a 44 ) = … - 重複した計算を上手く記憶しておくことで速くできそう
計算量の例 13 - 途中計算を記憶しておく実装
計算量の例 14 - 途中計算を記憶しておく実装 - 計算時間 -
a 40 : ≒ 1ms - a 100 : ≒ 1ms - ちなみにこういうアルゴリズムを総称して動的計画法(DP)という
エンジニアの視点から 15 - 競プロをやることの利点
エンジニアの視点から 16 - 競プロをやることの利点 - 処理を軽くすることに目が向きやすい
エンジニアの視点から 17 - 例)
エンジニアの視点から 18 - ナイーブにやる - 二重ループは改善できそう
エンジニアの視点から 19 - 連想配列を使う -
二重ループが解消できる
まとめ 20 - 競プロでは、計算方法自体はすぐわかるけど、 それを現実的な時間で計算できるかが求められる - 普段の実装でも、細かい計算量の削減に目が行き届くようになる
21