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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
競プロライブラリ紹介
Search
matumoto
March 12, 2022
Technology
38
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
競プロライブラリ紹介
2022/3月に行われた全国学生エンジニア交流会での発表資料です
イベントページはこちら
https://zli.connpass.com/event/239501/
matumoto
March 12, 2022
More Decks by matumoto
See All by matumoto
Go標準パッケージのI/O処理をながめる
matumoto
0
460
testingを眺める
matumoto
1
220
sync/v2 プロポーザルの 背景と sync.Pool について
matumoto
0
810
Goトランザクション処理
matumoto
1
93
いまいちどスライスの 挙動を見直してみる
matumoto
0
430
Go1.22のリリース予定の機能を見る
matumoto
0
92
GoのUnderlying typeについて
matumoto
0
250
Typed-nilについて
matumoto
0
390
GoのType Setsという概念
matumoto
0
62
Other Decks in Technology
See All in Technology
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
150
Benchmarking Vector Databases: pgvector vs. LanceDB
tsho
0
150
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1.1k
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
250
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
130
2026/09/10 Spring_Bootから_Jakarta_EE_MicroProfileへの移行
megascus
0
250
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
240
enechainの内製セルフサービスプラットフォーム
hiyosi
0
140
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
110
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.7k
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
150
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
640
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
41k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Optimizing for Happiness
mojombo
378
71k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
Documentation Writing (for coders)
carmenintech
77
5.5k
The Cost Of JavaScript in 2023
addyosmani
55
10k
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
おまけ
ありがとうございました!