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
競プロへの誘 -いざな-
Search
U76NER
May 16, 2022
Programming
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
競プロへの誘 -いざな-
WASD Inc. LT会(仮)
2022-03-25
U76NER
May 16, 2022
More Decks by U76NER
See All by U76NER
JSのクラスの後ろ向きな話
u76ner
0
140
GASええやん
u76ner
1
110
mockdateええやん
u76ner
0
320
Other Decks in Programming
See All in Programming
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
560
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.4k
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
560
新卒PdEのリアル
ryu1013
1
510
Heart of Swift Concurrency
koher
0
950
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
350
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
350
What We Talk About When We Talk About XP
m_seki
2
670
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
5
4.2k
Family mrubyの進捗
kishima
1
130
setup-vp GitLab対応の裏側
naokihaba
0
120
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
220
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Accessibility Awareness
sabderemane
1
220
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
So, you think you're a good person
axbom
PRO
2
2.2k
Amusing Abliteration
ianozsvald
1
310
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
720
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
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