データ構造
この問題集で鍛えるのは、問題に合った入れ物を選ぶ力です。累積和といもす法はループを回さずに区間の問いに答え、ヒープは最小の要素をいつでも取り出せるようにし、Union-Find はどの要素が同じグループかを管理します。
13 の章は、よく使う全探索のテクニックから始まり、累積和、いもす法、スタック、キューと両端キュー、ヒープ、トライ木、Union-Find、BIT とセグメント木と続き、最後はスプレー木、平方分割(Mo's)、オフラインアルゴリズム、その他の高度なデータ構造で終わります。トラック 1 で最も大きな問題集なので、一章ずつ進めるのがおすすめです。
366 問レーティング 1161–311213 章
書斎を開く
誰かと一緒にこの問題集を進めたいなら、ログインして書斎を開いてみてください。ヒロインが一問ずつ出題してくれます。
零、よく使うBrute-Force Searchテクニック
§0.1 右端をBrute-Force Searchし、左側を管理する
§0.1.2 発展
§0.2 中央をBrute-Force Searchする
§0.3 対角線の走査
| 問題 | レーティング |
|---|---|
| 3446. Sort Matrix by Diagonals | 1373 |
| 1329. Sort the Matrix Diagonally | 1548 |
| 498. Diagonal Traverse | 1548 |
一、Prefix Sum
§1.1 基礎
§1.2 Prefix SumとHash Table
§1.3 距離の総和
§1.4 BitmaskのPrefix Sum
§1.5 発展
§1.6 2D Prefix Sum
二、Difference Array (Imos)
§2.1 1D Difference Array
§2.2 2D Difference Array
| 問題 | レーティング |
|---|---|
| 2536. Increment Submatrices by One | 1583 |
| 850. Rectangle Area II | 2236 |
| 2132. Stamping the Grid | 2364 |
三、Stack
§3.1 基礎
§3.2 発展
§3.3 隣接要素の消去
§3.4 正しい括弧列(RBS)
§3.5 式の構文解析
§3.6 二つのStackを向かい合わせる
| 問題 | レーティング |
|---|---|
| 2296. Design a Text Editor | 1912 |
四、Queue
§4.1 基礎
| 問題 | レーティング |
|---|---|
| 933. Number of Recent Calls | 1338 |
| 950. Reveal Cards in Increasing Order | 1686 |
| 649. Dota2 Senate | 1686 |
§4.2 設計
| 問題 | レーティング |
|---|---|
| 1670. Design Front Middle Back Queue | 1610 |
| 225. Implement Stack Using Queues | 1851 |
| 232. Implement Queue Using Stacks | 1851 |
| 622. Design Circular Queue | 1851 |
| 641. Design Circular Deque | 1851 |
§4.3 Deque
| 問題 | レーティング |
|---|---|
| 2810. Faulty Keyboard | 1851 |
§4.4 Monotonic Queue
五、Heap(Priority Queue)
§5.1 基礎
§5.2 発展
§5.3 K 番目に小さい / 大きい値
| 問題 | レーティング |
|---|---|
| 264. Ugly Number II | 1818 |
| 23. Merge K Sorted Lists | 1818 |
§5.4 要素の並べ替え
§5.5 後から取り消すHeap
| 問題 | レーティング |
|---|---|
| 630. Course Schedule III | 2074 |
| 3362. Zero Array Transformation III | 2424 |
| 2813. Maximum Elegance of a K Length Subsequence | 2582 |
| 3049. Earliest Second to Mark Indices II | 3111 |
§5.6 Lazy Deletion Heap
§5.7 二つのHeap(Sliding Windowの K 番目)
六、Trie
§6.1 基礎
§6.2 発展
§6.3 Trieで高速化する DP
| 問題 | レーティング |
|---|---|
| 140. Word Break II | 1725 |
§6.4 0-1 Trie (XOR Trie)
| 問題 | レーティング |
|---|---|
| 1707. Maximum XOR with an Element From Array | 2359 |
| 1938. Maximum Genetic Difference Query | 2503 |
七、Union-Find
§7.1 基礎
| 問題 | レーティング |
|---|---|
| 3493. Properties Graph | 1565 |
| 990. Satisfiability of Equality Equations | 1638 |
| 3532. Path Existence Queries in a Graph I | 1725 |
§7.2 発展
§7.3 GCD と Union-Find
§7.4 array上の Union-Find
§7.5 区間 Union-Find
| 問題 | レーティング |
|---|---|
| 3244. Shortest Distance After Road Addition Queries II | 2270 |
| 1851. Minimum Interval to Include Each Query | 2286 |
§7.6 重み付き Union-Find(辺重み)
| 問題 | レーティング |
|---|---|
| 399. Evaluate Division | 1725 |
八、BIT とSegment Tree
§8.1 BIT(Fenwick Tree)
§8.2 転倒数
§8.3 Segment Tree(区間更新なし)
§8.4 Lazy Segment Tree(区間更新あり)
§8.5 Dynamic Segment Tree
| 問題 | レーティング |
|---|---|
| 699. Falling Squares | 2286 |
| 715. Range Module | 2286 |
| 729. My Calendar I | 2286 |
| 731. My Calendar II | 2286 |
| 732. My Calendar III | 2286 |
| 2276. Count Integers in Intervals | 2222 |
| 3590. Kth Smallest Path XOR Sum | 2646 |
§8.6 Persistent Segment Tree
| 問題 | レーティング |
|---|---|
| 3762. Minimum Operations to Equalize Subarrays | 2497 |
§8.7 Sparse Table
| 問題 | レーティング |
|---|---|
| 3501. Maximize Active Section with Trade II | 2941 |
九、Splay Tree
§9.1 基礎
| 問題 | レーティング |
|---|---|
| 2296. Design a Text Editor | 1912 |
十、Sqrt Decomposition系algorithm
§8.1 Sqrt Decomposition
| 問題 | レーティング |
|---|---|
| 3655. XOR After Range Multiplication Queries II | 2454 |
§8.2 Mo's algorithm
| 問題 | レーティング |
|---|---|
| 3636. Threshold Majority Queries | 2451 |
| 3590. Kth Smallest Path XOR Sum | 2646 |
§8.3 その他
| 問題 | レーティング |
|---|---|
| 3234. Count the Number of Substrings with Dominant Ones | 2557 |
特集:Offline Algorithm
§10.1 基礎
特集:やや複雑な問題
Part A
| 問題 | レーティング |
|---|---|
| 2532. Time to Cross a Bridge | 2589 |
| 2056. Number of Valid Move Combinations on Chessboard | 2611 |
レーティングの上限を 1600 か 1900 にしている場合、ここの難しい問題はチャレンジリストで待機し、上限を上げる前にはヒロインが確認してくれます。
レーティングは zerotrac さんによる LeetCode コンテストレーティングです。zerotrac のレーティングがない問題は「未評価」と表示されます。
書斎を開く