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
matumoto
March 12, 2022
Technology
0
5
競プロライブラリ紹介
2022/3月に行われた全国学生エンジニア交流会での発表資料です
イベントページはこちら
https://zli.connpass.com/event/239501/
matumoto
March 12, 2022
Tweet
Share
More Decks by matumoto
See All by matumoto
Go1.22のリリース予定の機能を見る
matumoto
0
37
GoのUnderlying typeについて
matumoto
0
81
Typed-nilについて
matumoto
0
52
GoのType Setsという概念
matumoto
0
5
GoのRateLimit処理の実装
matumoto
0
87
Webプッシュ通知触ってみた
matumoto
0
23
拡張ユークリッドの互除法の紹介
matumoto
0
48
Goでの楕円曲線暗号の実装
matumoto
0
26
インターン参加記
matumoto
0
20
Other Decks in Technology
See All in Technology
TanStack Routerで型安全かつ効率的なルーティングを実現
ytaisei
4
730
QAエンジニアが伝えたい品質保証の羅針盤 / Compass for Quality Assurance
mii3king
1
310
RailsConf 2024 Keynote "Startups on Rails in 2024"
irinanazarova
0
300
From here to resilience - a travel guide
ufried
1
150
テストコードを書きながらCompose Multiplatformを乗りこなす
subroh0508
0
120
Secrets of a PowerShell "Guru"
guyrleech
1
120
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
37k
Max out Local LLM in Challenging Environments
sashimimochi
2
230
TypescriptでのContextualな構造化ロギングと社内全体への導入
leveragestech
3
410
知識と実践を紡ぐGenAI / Connecting Knowledge and experience with GenAI
aki_moon
2
130
能動学習のいろは:書籍「Human-in-the-Loop機械学習」3〜5章
hiroyoshiito
0
280
cgroup v2 で何が変わったのか / TechFeed Experts Night #28
tenforward
2
140
Featured
See All Featured
Code Review Best Practice
trishagee
56
15k
Facilitating Awesome Meetings
lara
43
5.6k
Six Lessons from altMBA
skipperchong
22
3k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
jQuery: Nuts, Bolts and Bling
dougneiner
60
7.2k
Teambox: Starting and Learning
jrom
128
8.4k
Designing on Purpose - Digital PM Summit 2013
jponch
111
6.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
34
6.1k
Why Our Code Smells
bkeepers
PRO
331
56k
Building Better People: How to give real-time feedback that sticks.
wjessup
356
18k
Producing Creativity
orderedlist
PRO
338
39k
Transcript
競プロライブラリを紹介 matumoto
自己紹介 • HN:matumoto • 学部 2 年(新3年) • 所属:Zli、競技プログラミング、企画開発部 •
趣味:漫画、YouTube、競技プログラミング • AtCoder:水 • GitHub:matumoto1234 • Twitter:@matumoto_1234
ライブラリを紹介したい!
作ったはいいものの... • 使わないものが多い • たまにバグっている • 素で書いた方が早い • 柔軟性が少ない •
使い方を覚えていない 紹介して供養 🙏
https://github.com/matumoto1234/library GitHubリポジトリ
データ構造
二分探索を構造体にしたもの • is_valid 関数と範囲を受け取ると二分探索する • 一番使っていない • 素で書いた方が早い • 実は既に消してしまった
dynamic_imos • imos 法の範囲が大きくなったバージョン • 1 <= value <= 1e9
https://github.com/matumoto1234/library/blob/main/data-structure/dynamic-imos.hpp
imos 法とは? 0 1 2 1 ~ 6 5 ~
10 12 ~ 17 2 ~ 12 3 4 5 6 7 8 9 10 11 12 13 14 17 15 16 区間の重なりを知りたい!
区間の重なり 0 1 2 1 ~ 6 5 ~ 10
12 ~ 16 2 ~ 12 3 4 5 6 7 8 9 10 11 12 13 14 17 15 16 5 には 3 つの区間が重なってる 11 には 1 つの区間が重なってる => 区間の長さ × 区間の長さに比例してしまう
区間の重なり 0 1 2 +1 3 4 5 6 7
8 9 10 11 12 13 14 17 15 16 -1 +1 -1 +1 -1 +1 -1
区間の重なり 0 1 2 +1 3 4 5 6 7
8 9 10 11 12 13 14 17 15 16 -1 +1 -1 +1 -1 +1 -1 区間の長さ + 区間の数にはなった!
tree • 木に関係する操作をまとめた便利なやつ • 最小共通祖先 • レベルアンセスター • 木の直径 https://github.com/matumoto1234/library/blob/main/graph/tree.hpp
tree • 使わない! • 他のそれ専用のライブラリを使ってしまう https://github.com/matumoto1234/library/blob/main/graph/tree.hpp
グラフ系
convert_graph • グリッドグラフを隣接リストにする便利関数 • 隣接しているマスを隣接頂点とする • 迷路とかで使う予定だった https://github.com/matumoto1234/library/blob/main/graph/convert-graph.hpp
convert_graph • 使わない! • 迷路は迷路のままで解いてしまう https://github.com/matumoto1234/library/blob/main/graph/convert-graph.hpp
shortest-hamiltonian-path • 最小ハミルトン経路を解く • 巡回セールスマン問題の親戚 https://github.com/matumoto1234/library/blob/main/graph/shortest-hamiltonian-path.hpp
shortest-hamiltonian-path • 使わない! • 実は shortest-hamiltonian-cycle もある • どっちを使えばいいか悩んでしまう •
使用用途がかなり限定的になっている https://github.com/matumoto1234/library/blob/main/graph/shortest-hamiltonian-path.hpp
数学系
floor div • 切り捨ての整数除算をする https://github.com/matumoto1234/library/blob/main/math/floor-div.hpp
floor div • int 型で割り算すればよいです https://github.com/matumoto1234/library/blob/main/math/floor-div.hpp
is prime • 素数判定をする https://github.com/matumoto1234/library/blob/main/math/is-prime.hpp
is prime • 素数判定だけが必要な問題はほぼないです • 他のライブラリで補える https://github.com/matumoto1234/library/blob/main/math/is-prime.hpp
便利ツール系
stopwatch • 時間を計測してくれる https://github.com/matumoto1234/library/blob/main/tools/stopwatch.hpp
stopwatch • いる? • 性能を試したいときは使うかも https://github.com/matumoto1234/library/blob/main/tools/stopwatch.hpp
sliced • python のスライスがほしかった • array[l:r] で [l, r) の配列がほしい
• sliced(array, l, r) で行う https://github.com/matumoto1234/library/blob/main/tools/sliced.hpp
sliced • わざわざ使わない... • ごめん https://github.com/matumoto1234/library/blob/main/tools/sliced.hpp
おまけ
ありがとうございました!