From e1712a4e7069b224a2385999d09a5328d22fe1f5 Mon Sep 17 00:00:00 2001 From: NUHASHROXME <106915718+YashNuhash@users.noreply.github.com> Date: Mon, 12 Jun 2023 11:10:47 +0600 Subject: [PATCH 001/454] Updated Problem list binary_search.md Added a new Problem. --- src/num_methods/binary_search.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/num_methods/binary_search.md b/src/num_methods/binary_search.md index a95db3c32..31332a209 100644 --- a/src/num_methods/binary_search.md +++ b/src/num_methods/binary_search.md @@ -143,6 +143,7 @@ This paradigm is widely used in tasks around trees, such as finding lowest commo * [LeetCode - Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/) * [LeetCode - Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower/) * [LeetCode - Search a 2D Matrix II](https://leetcode.com/problems/search-a-2d-matrix-ii/) +* [LeetCode - Kth Ancestor of a Tree Node](https://leetcode.com/problems/kth-ancestor-of-a-tree-node) * [Codeforces - Interesting Drink](https://codeforces.com/problemset/problem/706/B/) * [Codeforces - Magic Powder - 1](https://codeforces.com/problemset/problem/670/D1) * [Codeforces - Another Problem on Strings](https://codeforces.com/problemset/problem/165/C) From b021708cad4194f3c7a6248ff22721b2982df1a8 Mon Sep 17 00:00:00 2001 From: dallasyan Date: Sun, 27 Aug 2023 17:21:38 +1000 Subject: [PATCH 002/454] Update point-in-convex-polygon.md, fix cross product 0 check and `prepair` typo --- src/geometry/point-in-convex-polygon.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/geometry/point-in-convex-polygon.md b/src/geometry/point-in-convex-polygon.md index f04012748..7d6e630b7 100644 --- a/src/geometry/point-in-convex-polygon.md +++ b/src/geometry/point-in-convex-polygon.md @@ -42,7 +42,7 @@ If it is inside, then it will be equal. ## Implementation -The function `prepair` will make sure that the lexicographical smallest point (smallest x value, and in ties smallest y value) will be $p_0$, and computes the vectors $p_i - p_0$. +The function `prepare` will make sure that the lexicographical smallest point (smallest x value, and in ties smallest y value) will be $p_0$, and computes the vectors $p_i - p_0$. Afterwards the function `pointInConvexPolygon` computes the result of a query. We additionally remember the point $p_0$ and translate all queried points with it in order compute the correct distance, as vectors don't have an initial point. By translating the query points we can assume that all vectors start at the origin $(0, 0)$, and simplify the computations for distances and lengths. @@ -95,7 +95,7 @@ void prepare(vector &points) { bool pointInConvexPolygon(pt point) { point = point - translation; - if (seq[0].cross(point) != 1 && + if (seq[0].cross(point) != 0 && sgn(seq[0].cross(point)) != sgn(seq[0].cross(seq[n - 1]))) return false; if (seq[n - 1].cross(point) != 0 && From 3fe9c7053c59f119369646f99f0c59e05d1a183e Mon Sep 17 00:00:00 2001 From: Mehrdad <70322560+mehrdad3301@users.noreply.github.com> Date: Sun, 27 Aug 2023 22:56:44 +0330 Subject: [PATCH 003/454] fix: fix small grammar --- src/data_structures/segment_tree.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data_structures/segment_tree.md b/src/data_structures/segment_tree.md index 0c4f4fb0a..67090a82e 100644 --- a/src/data_structures/segment_tree.md +++ b/src/data_structures/segment_tree.md @@ -121,7 +121,7 @@ We can show that this proposition (at most four vertices each level) is true by At the first level, we only visit one vertex, the root vertex, so here we visit less than four vertices. Now let's look at an arbitrary level. By induction hypothesis, we visit at most four vertices. -If we only visit at most two vertices, the next level has at most four vertices. That trivial, because each vertex can only cause at most two recursive calls. +If we only visit at most two vertices, the next level has at most four vertices. That is trivial, because each vertex can only cause at most two recursive calls. So let's assume that we visit three or four vertices in the current level. From those vertices, we will analyze the vertices in the middle more carefully. Since the sum query asks for the sum of a continuous subarray, we know that segments corresponding to the visited vertices in the middle will be completely covered by the segment of the sum query. From 181fce0efeb863312845ef158da5f06fc6144c45 Mon Sep 17 00:00:00 2001 From: iagorrr <85769349+iagorrr@users.noreply.github.com> Date: Sun, 27 Aug 2023 18:34:43 -0300 Subject: [PATCH 004/454] Update suffix-automaton.md, adds practice problems --- src/string/suffix-automaton.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/string/suffix-automaton.md b/src/string/suffix-automaton.md index f7a46c81f..47c60c169 100644 --- a/src/string/suffix-automaton.md +++ b/src/string/suffix-automaton.md @@ -775,6 +775,13 @@ After that, the answer to the problem will be the string $longest(v)$ for the st ## Practice Problems + - [CSES - Finding Patterns](https://cses.fi/problemset/task/2102) + - [CSES - Counting Patterns](https://cses.fi/problemset/task/2103) + - [CSES - String Matching](https://cses.fi/problemset/task/1753) + - [CSES - Patterns Positions](https://cses.fi/problemset/task/2104) + - [CSES - Distinct Substrings](https://cses.fi/problemset/task/2105) + - [CSES - Word Combinations](https://cses.fi/problemset/task/1731) + - [CSES - String Distribution](https://cses.fi/problemset/task/2110) - [AtCoder - K-th Substring](https://atcoder.jp/contests/abc097/tasks/arc097_a) - [SPOJ - SUBLEX](https://www.spoj.com/problems/SUBLEX/) - [Codeforces - Cyclical Quest](https://codeforces.com/problemset/problem/235/C) From 35eb407d9c2ada7abab257bc2d1f6ad83a27a67f Mon Sep 17 00:00:00 2001 From: Akash Nayar <33558235+Akash-Nayar@users.noreply.github.com> Date: Wed, 17 May 2023 10:22:40 -0400 Subject: [PATCH 005/454] Update bit-manipulation.md (Fix Typo) "enought" -> "enough" --- src/algebra/bit-manipulation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/algebra/bit-manipulation.md b/src/algebra/bit-manipulation.md index b61cfbf85..f4047181d 100644 --- a/src/algebra/bit-manipulation.md +++ b/src/algebra/bit-manipulation.md @@ -37,7 +37,7 @@ assert(negative_signed_number == 0b1111'1111'1111'1111'1111'1111'1111'0011); CPUs are very fast manipulating those bits with specific operations. For some problems we can take these binary number representations to our advantage, and speed up the execution time. -And for some problems (typically in combinatorics or dynamic programming) where we want to track which objects we already picked from a given set of objects, we can just use an large enought integer where each digit represents an object and depending on if we pick or drop the object we set or clear the digit. +And for some problems (typically in combinatorics or dynamic programming) where we want to track which objects we already picked from a given set of objects, we can just use an large enough integer where each digit represents an object and depending on if we pick or drop the object we set or clear the digit. ## Bit operators From 918fb74fa0056feed71e09dbecc0bea0c13eb6c9 Mon Sep 17 00:00:00 2001 From: huggin Date: Sun, 14 May 2023 15:41:48 -0700 Subject: [PATCH 006/454] fix z_function --- src/string/z-function.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/string/z-function.md b/src/string/z-function.md index 632eddc43..c83938cb4 100644 --- a/src/string/z-function.md +++ b/src/string/z-function.md @@ -33,7 +33,7 @@ vector z_function_trivial(string s) { int n = s.size(); vector z(n); for (int i = 1; i < n; i++) { - while (s[z[i]] == s[i + z[i]]) { + while (i + z[i] < n && s[z[i]] == s[i + z[i]]) { z[i]++; } } @@ -96,7 +96,7 @@ vector z_function(string s) { if(i < r) { z[i] = min(r - i, z[i - l]); } - while(s[z[i]] == s[i + z[i]]) { + while(i + z[i] < n && s[z[i]] == s[i + z[i]]) { z[i]++; } if(i + z[i] > r) { From d4e1bf399c70372b39b9225036497190e961230a Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sat, 3 Jun 2023 14:19:53 +0200 Subject: [PATCH 007/454] new GA4 tag --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 7fe24eeb9..f539e7249 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -74,4 +74,4 @@ plugins: extra: analytics: provider: google - property: UA-85220282-1 + property: G-7FLS2HCYHH From 271a56bf9117476923dae354cf7e93661f5b2121 Mon Sep 17 00:00:00 2001 From: Sourav Date: Fri, 1 Sep 2023 00:46:49 -0300 Subject: [PATCH 008/454] Added Hare n Tortoise algorithm under data structures --- .../hare_tortoise_algorithm.md | 105 ++++++++++++++++++ src/data_structures/tortoise_hare_algo.png | Bin 0 -> 17291 bytes .../tortoise_hare_algo_proof.png | Bin 0 -> 26102 bytes src/data_structures/tortoise_hare_proof.png | Bin 0 -> 27733 bytes .../tortouse_hare_cycle_found.png | Bin 0 -> 21399 bytes 5 files changed, 105 insertions(+) create mode 100644 src/data_structures/hare_tortoise_algorithm.md create mode 100644 src/data_structures/tortoise_hare_algo.png create mode 100644 src/data_structures/tortoise_hare_algo_proof.png create mode 100644 src/data_structures/tortoise_hare_proof.png create mode 100644 src/data_structures/tortouse_hare_cycle_found.png diff --git a/src/data_structures/hare_tortoise_algorithm.md b/src/data_structures/hare_tortoise_algorithm.md new file mode 100644 index 000000000..ae1844d31 --- /dev/null +++ b/src/data_structures/hare_tortoise_algorithm.md @@ -0,0 +1,105 @@ + +--- +tags: + - Translated +e_maxx_link: hare_tortoise_algorithm +--- + +# Floyd's Linked List Cycle Finding Algorithm + +Given a linked list where the starting point of that linked list is denoted by `head`, and there may or may not be a cycle present. For instance: + +![[tortoise_hare_algo.png]] + +Here we need to find out the point `C`, i.e the starting point of the cycle. + +## Proposed algorithm +The algorithm is called `Floyd’s Cycle Algorithm or Tortoise n Hare algorithm`. +In order to figure out the starting point of the cycle, we need to figure out of the the cycle even exists or not. +So, it involved two steps: +1. Figure out the presence of the cycle. +2. Find out the starting point of the cycle. + +### Step 1: Presence of the cycle +1. Take two pointers $slow$ and $fast$. +2. Both of them will point to head of the linked list initially. +3. $slow$ will move one step at a time. +4. $fast$ will move two steps at a time. (twice as speed as $slow$ pointer). +5. check if at any point they point to the same node before any one(or both) reach null. +6. if they point to any same node at any point of their journey, it would indicate that the cycle indeed exists in the linked list. +7. if we get null, it would indicate that the linked list has no cycle. + +![[tortouse_hare_cycle_found.png]] + +Now, that we have figured out that there is a cycle present in the linked list, for the next step we need to find out the starting point of cycle, i.e., `C. +### Step 2: Starting point of the cycle +1. Reset the $slow$ pointer to the `head` of the linked list. +2. Move both pointers one step at a time. +3. The point they will meet at will be the starting point of the cycle. + +```java +// Presence of cycle +public boolean hasCycle(ListNode head) { + ListNode slow = head; + ListNode fast = head; + + while(slow !=null && fast != null && fast.next != null){ + slow = slow.next; + fast = fast.next.next; + if(slow==fast){ + return true; + } + } + + return false; +} +``` + +```java +// Assuming there is a cycle present and slow and fast are point to their meeting point +slow = head; +while(slow!=fast){ + slow = slow.next; + fast = fast.next; +} + +return slow; // the starting point of the cycle. +``` + +## Why does it work + +### Step 1: Presence of the cycle +Since the pointer $fast$ is moving with twice as speed as $slow$, we can say that at any point of time, $fast$ would have covered twice as much distance as $slow$. +We can also deduce that the difference between the distance covered by both of these pointers is increasing by $1$. +``` +slow: 0 --> 1 --> 2 --> 3 --> 4 (distance covered) +fast: 0 --> 2 --> 4 --> 6 --> 8 (distance covered) +diff: 0 --> 1 --> 2 --> 3 --> 4 (difference between distance covered by both pointers) +``` + +So, if we assume that Length of cycle is: $L$, we can also say that there will be a point when the difference between $slow$ and $fast$ pointer will grow and reach $NXL$ where $N>0$ . + +When both $slow$ and $fast$ are within cycle, and the difference between their covered lengths is $NXL$, then they are bound to point at same node, indicating the presence of cycle. + +### Step 2: Starting point of the cycle + +Lets try to calculate the distance covered by both of the pointers till they point they met within the cycle. + +distance covered by slow = $slowDist$ +distance covered by fast = $fastDist$ + +$slowDist = a + xL + b$ $x\ge0$ +$fastDist = a + yL + b$ $y\ge0$ + +![[tortoise_hare_proof.png]] + +$a + yL + b = 2(a + xL + b)$ + +$a=(y-2x)L-b$ where $y-2x$ is an integer. + +We know that $fast$ has already covered $b$, so, we can say that the distance $a$ is same as some multiple of length of the cycle. + +# Problems: +- [Linked List Cycle (EASY)](https://leetcode.com/problems/linked-list-cycle/) +- [Find the Duplicate Number (Medium)](https://leetcode.com/problems/find-the-duplicate-number/) + diff --git a/src/data_structures/tortoise_hare_algo.png b/src/data_structures/tortoise_hare_algo.png new file mode 100644 index 0000000000000000000000000000000000000000..24d2f688261cf59f3ed1471338b072f7c790d6c6 GIT binary patch literal 17291 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 literal 0 HcmV?d00001 From 9713dace5ff724ec0b49ef7c108bf9a5b1e21981 Mon Sep 17 00:00:00 2001 From: Sourav Date: Fri, 1 Sep 2023 00:47:32 -0300 Subject: [PATCH 009/454] Update navigation.md --- src/navigation.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/navigation.md b/src/navigation.md index 260c68a26..ab6db7722 100644 --- a/src/navigation.md +++ b/src/navigation.md @@ -50,6 +50,7 @@ search: - Fundamentals - [Minimum Stack / Minimum Queue](data_structures/stack_queue_modification.md) - [Sparse Table](data_structures/sparse-table.md) + - [Hare Tortoise Algorithm (Linked List cycle detection)](hare_tortoise_algorithm.md) - Trees - [Disjoint Set Union](data_structures/disjoint_set_union.md) - [Fenwick Tree](data_structures/fenwick.md) From fa35cc41baa9034b3cc0de2cce7b88d11a4a44a1 Mon Sep 17 00:00:00 2001 From: Sourav Date: Fri, 1 Sep 2023 00:51:39 -0300 Subject: [PATCH 010/454] Update navigation.md --- src/navigation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/navigation.md b/src/navigation.md index ab6db7722..e11a9e06b 100644 --- a/src/navigation.md +++ b/src/navigation.md @@ -50,7 +50,7 @@ search: - Fundamentals - [Minimum Stack / Minimum Queue](data_structures/stack_queue_modification.md) - [Sparse Table](data_structures/sparse-table.md) - - [Hare Tortoise Algorithm (Linked List cycle detection)](hare_tortoise_algorithm.md) + - [Hare Tortoise Algorithm (Linked List cycle detection)](data_structures/hare_tortoise_algorithm.md) - Trees - [Disjoint Set Union](data_structures/disjoint_set_union.md) - [Fenwick Tree](data_structures/fenwick.md) From f60fb44f9b618dc4068fddac9f89034ad00312cb Mon Sep 17 00:00:00 2001 From: Harshit Jain <117633610+harshit-jain52@users.noreply.github.com> Date: Fri, 1 Sep 2023 11:23:19 +0530 Subject: [PATCH 011/454] Update fenwick.md --- src/data_structures/fenwick.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data_structures/fenwick.md b/src/data_structures/fenwick.md index 01a49040b..81142bdbd 100644 --- a/src/data_structures/fenwick.md +++ b/src/data_structures/fenwick.md @@ -486,6 +486,7 @@ def range_sum(l, r): * [Codeforces - Goodbye Souvenir](http://codeforces.com/contest/849/problem/E) * [SPOJ - Ada and Species](http://www.spoj.com/problems/ADACABAA/) * [Codeforces - Thor](https://codeforces.com/problemset/problem/704/A) +* [CSES - Forest Queries II](https://cses.fi/problemset/task/1739/) * [Latin American Regionals 2017 - Fundraising](http://matcomgrader.com/problem/9346/fundraising/) ## Other sources From 2f48179b8aea09df8aef31c8524571927a8d2d51 Mon Sep 17 00:00:00 2001 From: Sourav Date: Sat, 9 Sep 2023 22:43:20 -0300 Subject: [PATCH 012/454] Update hare_tortoise_algorithm.md Modified the article. --- .../hare_tortoise_algorithm.md | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/data_structures/hare_tortoise_algorithm.md b/src/data_structures/hare_tortoise_algorithm.md index ae1844d31..c7e93f440 100644 --- a/src/data_structures/hare_tortoise_algorithm.md +++ b/src/data_structures/hare_tortoise_algorithm.md @@ -1,20 +1,19 @@ --- tags: - - Translated -e_maxx_link: hare_tortoise_algorithm + - Original --- # Floyd's Linked List Cycle Finding Algorithm -Given a linked list where the starting point of that linked list is denoted by `head`, and there may or may not be a cycle present. For instance: +Given a linked list where the starting point of that linked list is denoted by **head**, and there may or may not be a cycle present. For instance: ![[tortoise_hare_algo.png]] -Here we need to find out the point `C`, i.e the starting point of the cycle. +Here we need to find out the point **C**, i.e the starting point of the cycle. ## Proposed algorithm -The algorithm is called `Floyd’s Cycle Algorithm or Tortoise n Hare algorithm`. +The algorithm is called **Floyd’s Cycle Algorithm or Tortoise And Hare algorithm**. In order to figure out the starting point of the cycle, we need to figure out of the the cycle even exists or not. So, it involved two steps: 1. Figure out the presence of the cycle. @@ -25,15 +24,15 @@ So, it involved two steps: 2. Both of them will point to head of the linked list initially. 3. $slow$ will move one step at a time. 4. $fast$ will move two steps at a time. (twice as speed as $slow$ pointer). -5. check if at any point they point to the same node before any one(or both) reach null. -6. if they point to any same node at any point of their journey, it would indicate that the cycle indeed exists in the linked list. -7. if we get null, it would indicate that the linked list has no cycle. +5. Check if at any point they point to the same node before any one(or both) reach null. +6. If they point to any same node at any point of their journey, it would indicate that the cycle indeed exists in the linked list. +7. If we get null, it would indicate that the linked list has no cycle. ![[tortouse_hare_cycle_found.png]] -Now, that we have figured out that there is a cycle present in the linked list, for the next step we need to find out the starting point of cycle, i.e., `C. +Now, that we have figured out that there is a cycle present in the linked list, for the next step we need to find out the starting point of cycle, i.e., **C**. ### Step 2: Starting point of the cycle -1. Reset the $slow$ pointer to the `head` of the linked list. +1. Reset the $slow$ pointer to the **head** of the linked list. 2. Move both pointers one step at a time. 3. The point they will meet at will be the starting point of the cycle. @@ -76,28 +75,33 @@ slow: 0 --> 1 --> 2 --> 3 --> 4 (distance covered) fast: 0 --> 2 --> 4 --> 6 --> 8 (distance covered) diff: 0 --> 1 --> 2 --> 3 --> 4 (difference between distance covered by both pointers) ``` - -So, if we assume that Length of cycle is: $L$, we can also say that there will be a point when the difference between $slow$ and $fast$ pointer will grow and reach $NXL$ where $N>0$ . - -When both $slow$ and $fast$ are within cycle, and the difference between their covered lengths is $NXL$, then they are bound to point at same node, indicating the presence of cycle. +Let $\lambda$ denote the length of the cycle, and $\mu$ represent the number of steps required for the slow pointer to reach the cycle. It's important to emphasize that there exists a positive integer $k$ ($k > 0$) such that $k\lambda \geq \mu$. +When the slow pointer has moved $k\lambda$ steps, and the fast pointer has covered $2k\lambda$ steps, both pointers find themselves within the cycle. At this point, there is a separation of $k\lambda$ between them. Given that the cycle's length remains $\lambda$, this signifies that they meet at the same point within the cycle, resulting in their encounter. ### Step 2: Starting point of the cycle Lets try to calculate the distance covered by both of the pointers till they point they met within the cycle. -distance covered by slow = $slowDist$ -distance covered by fast = $fastDist$ +![[tortoise_hare_proof.png]] $slowDist = a + xL + b$ $x\ge0$ -$fastDist = a + yL + b$ $y\ge0$ +$fastDist = a + yL + b$ $y\ge0 -![[tortoise_hare_proof.png]] +- $slowDist$ is the total distance covered by slow pointer. +- $fastDist$ is the total distance covered by fast pointer. +- $a$ is the number of steps both pointers need to take to enter the cycle. +- $b$ is the distance between **C** and **G**, i.e., distance between the starting point of cycle and meeting point of both pointers. +- $x$ is the number of times the slow pointer has circulated inside the cycle, starting from and ending at **C**. +- $y$ is the number of times the fast pointer has circulated inside the cycle, starting from and ending at **C**. +Knowing that $slowDist = 2 \cdot (fastDist)$. $a + yL + b = 2(a + xL + b)$ $a=(y-2x)L-b$ where $y-2x$ is an integer. -We know that $fast$ has already covered $b$, so, we can say that the distance $a$ is same as some multiple of length of the cycle. +This formula can translated as that basically $a$ steps is same as doing some number of full loops in cycle and go $b$ steps backwards. +Since the fast pointer already is $b$ steps ahead of the entry of cycle, if fast pointer does another $a$ steps it will end up at the entry of the cycle. +And since we let the slow pointer start at the start of the linked list, after $a$ steps it will also end up at the cycle entry. So, if they both move $a$ step they both will meet the entry of cycle. # Problems: - [Linked List Cycle (EASY)](https://leetcode.com/problems/linked-list-cycle/) From 92fe69ba517783fb58c3faa6a60c83300f0bf7f5 Mon Sep 17 00:00:00 2001 From: Sourav Date: Sat, 9 Sep 2023 22:46:12 -0300 Subject: [PATCH 013/454] Update hare_tortoise_algorithm.md --- src/data_structures/hare_tortoise_algorithm.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data_structures/hare_tortoise_algorithm.md b/src/data_structures/hare_tortoise_algorithm.md index c7e93f440..30b90cf98 100644 --- a/src/data_structures/hare_tortoise_algorithm.md +++ b/src/data_structures/hare_tortoise_algorithm.md @@ -91,10 +91,10 @@ $fastDist = a + yL + b$ $y\ge0 - $fastDist$ is the total distance covered by fast pointer. - $a$ is the number of steps both pointers need to take to enter the cycle. - $b$ is the distance between **C** and **G**, i.e., distance between the starting point of cycle and meeting point of both pointers. -- $x$ is the number of times the slow pointer has circulated inside the cycle, starting from and ending at **C**. -- $y$ is the number of times the fast pointer has circulated inside the cycle, starting from and ending at **C**. +- $x$ is the number of times the slow pointer has looped inside the cycle, starting from and ending at **C**. +- $y$ is the number of times the fast pointer has looped inside the cycle, starting from and ending at **C**. -Knowing that $slowDist = 2 \cdot (fastDist)$. +Knowing that $slowDist = 2 \cdot (fastDist)$ $a + yL + b = 2(a + xL + b)$ $a=(y-2x)L-b$ where $y-2x$ is an integer. From 428fb2614f105dc858ddd297cf4ba908a0d98fb9 Mon Sep 17 00:00:00 2001 From: Sourav Date: Sat, 9 Sep 2023 22:47:35 -0300 Subject: [PATCH 014/454] Update hare_tortoise_algorithm.md --- src/data_structures/hare_tortoise_algorithm.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data_structures/hare_tortoise_algorithm.md b/src/data_structures/hare_tortoise_algorithm.md index 30b90cf98..de69d3a62 100644 --- a/src/data_structures/hare_tortoise_algorithm.md +++ b/src/data_structures/hare_tortoise_algorithm.md @@ -95,6 +95,7 @@ $fastDist = a + yL + b$ $y\ge0 - $y$ is the number of times the fast pointer has looped inside the cycle, starting from and ending at **C**. Knowing that $slowDist = 2 \cdot (fastDist)$ + $a + yL + b = 2(a + xL + b)$ $a=(y-2x)L-b$ where $y-2x$ is an integer. From 3ee02152f8a1fe613af4d6cd5066c785e22fa82e Mon Sep 17 00:00:00 2001 From: Sourav Date: Sat, 9 Sep 2023 23:03:09 -0300 Subject: [PATCH 015/454] Update hare_tortoise_algorithm.md --- src/data_structures/hare_tortoise_algorithm.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/data_structures/hare_tortoise_algorithm.md b/src/data_structures/hare_tortoise_algorithm.md index de69d3a62..7ebdfb2db 100644 --- a/src/data_structures/hare_tortoise_algorithm.md +++ b/src/data_structures/hare_tortoise_algorithm.md @@ -75,7 +75,7 @@ slow: 0 --> 1 --> 2 --> 3 --> 4 (distance covered) fast: 0 --> 2 --> 4 --> 6 --> 8 (distance covered) diff: 0 --> 1 --> 2 --> 3 --> 4 (difference between distance covered by both pointers) ``` -Let $\lambda$ denote the length of the cycle, and $\mu$ represent the number of steps required for the slow pointer to reach the cycle. It's important to emphasize that there exists a positive integer $k$ ($k > 0$) such that $k\lambda \geq \mu$. +Let $\lambda$ denote the length of the cycle, and $\mu$ represent the number of steps required for the slow pointer to reach the entry of cycle. There exists a positive integer $k$ ($k > 0$) such that $k\lambda \geq \mu$. When the slow pointer has moved $k\lambda$ steps, and the fast pointer has covered $2k\lambda$ steps, both pointers find themselves within the cycle. At this point, there is a separation of $k\lambda$ between them. Given that the cycle's length remains $\lambda$, this signifies that they meet at the same point within the cycle, resulting in their encounter. ### Step 2: Starting point of the cycle @@ -94,14 +94,18 @@ $fastDist = a + yL + b$ $y\ge0 - $x$ is the number of times the slow pointer has looped inside the cycle, starting from and ending at **C**. - $y$ is the number of times the fast pointer has looped inside the cycle, starting from and ending at **C**. -Knowing that $slowDist = 2 \cdot (fastDist)$ +$slowDist = 2 \cdot (fastDist)$ $a + yL + b = 2(a + xL + b)$ -$a=(y-2x)L-b$ where $y-2x$ is an integer. +Resolving the formula we get: -This formula can translated as that basically $a$ steps is same as doing some number of full loops in cycle and go $b$ steps backwards. -Since the fast pointer already is $b$ steps ahead of the entry of cycle, if fast pointer does another $a$ steps it will end up at the entry of the cycle. +$a=(y-2x)L-b$ + +where $y-2x$ is an integer + +This basically means that $a$ steps is same as doing some number of full loops in cycle and go $b$ steps backwards. +Since the fast pointer already is $b$ steps ahead of the entry of cycle, if fast pointer moves another $a$ steps it will end up at the entry of the cycle. And since we let the slow pointer start at the start of the linked list, after $a$ steps it will also end up at the cycle entry. So, if they both move $a$ step they both will meet the entry of cycle. # Problems: From 662c6e1b5029306f6fc6e5190512c49334d995c6 Mon Sep 17 00:00:00 2001 From: Sourav Date: Sat, 9 Sep 2023 23:04:48 -0300 Subject: [PATCH 016/454] Update hare_tortoise_algorithm.md --- src/data_structures/hare_tortoise_algorithm.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/data_structures/hare_tortoise_algorithm.md b/src/data_structures/hare_tortoise_algorithm.md index 7ebdfb2db..8b22297ef 100644 --- a/src/data_structures/hare_tortoise_algorithm.md +++ b/src/data_structures/hare_tortoise_algorithm.md @@ -85,7 +85,8 @@ Lets try to calculate the distance covered by both of the pointers till they poi ![[tortoise_hare_proof.png]] $slowDist = a + xL + b$ $x\ge0$ -$fastDist = a + yL + b$ $y\ge0 + +$fastDist = a + yL + b$ $y\ge0$ - $slowDist$ is the total distance covered by slow pointer. - $fastDist$ is the total distance covered by fast pointer. From 43fa0890efcb61862ec775deecdaed578644bd7e Mon Sep 17 00:00:00 2001 From: Sourav Date: Sat, 9 Sep 2023 23:10:52 -0300 Subject: [PATCH 017/454] deleted unused image --- .../tortoise_hare_algo_proof.png | Bin 26102 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/data_structures/tortoise_hare_algo_proof.png diff --git a/src/data_structures/tortoise_hare_algo_proof.png b/src/data_structures/tortoise_hare_algo_proof.png deleted file mode 100644 index 46f7c254bb2371da5d710cddfd293957944302dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26102 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 Date: Sat, 9 Sep 2023 23:17:50 -0300 Subject: [PATCH 018/454] Update hare_tortoise_algorithm.md --- src/data_structures/hare_tortoise_algorithm.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data_structures/hare_tortoise_algorithm.md b/src/data_structures/hare_tortoise_algorithm.md index 8b22297ef..83fad231a 100644 --- a/src/data_structures/hare_tortoise_algorithm.md +++ b/src/data_structures/hare_tortoise_algorithm.md @@ -75,8 +75,8 @@ slow: 0 --> 1 --> 2 --> 3 --> 4 (distance covered) fast: 0 --> 2 --> 4 --> 6 --> 8 (distance covered) diff: 0 --> 1 --> 2 --> 3 --> 4 (difference between distance covered by both pointers) ``` -Let $\lambda$ denote the length of the cycle, and $\mu$ represent the number of steps required for the slow pointer to reach the entry of cycle. There exists a positive integer $k$ ($k > 0$) such that $k\lambda \geq \mu$. -When the slow pointer has moved $k\lambda$ steps, and the fast pointer has covered $2k\lambda$ steps, both pointers find themselves within the cycle. At this point, there is a separation of $k\lambda$ between them. Given that the cycle's length remains $\lambda$, this signifies that they meet at the same point within the cycle, resulting in their encounter. +Let $L$ denote the length of the cycle, and $a$ represent the number of steps required for the slow pointer to reach the entry of cycle. There exists a positive integer $k$ ($k > 0$) such that $k \cdot L \geq a$. +When the slow pointer has moved $k \cdot L$ steps, and the fast pointer has covered $2 \cdot k \cdot L$ steps, both pointers find themselves within the cycle. At this point, there is a separation of $k \cdot L$ between them. Given that the cycle's length remains $L$, this signifies that they meet at the same point within the cycle, resulting in their encounter. ### Step 2: Starting point of the cycle From 91bbeb2914471c8e6f6b4d1ec57d372d31f4e198 Mon Sep 17 00:00:00 2001 From: Sourav Date: Sat, 9 Sep 2023 23:28:20 -0300 Subject: [PATCH 019/454] Update factorization.md Linked tortoise and the hare algorithm. --- src/algebra/factorization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/algebra/factorization.md b/src/algebra/factorization.md index d6b102e87..4a7625e3c 100644 --- a/src/algebra/factorization.md +++ b/src/algebra/factorization.md @@ -271,7 +271,7 @@ In each iteration the first pointer advances to the next element, but the second It's not hard to see, that if there exists a cycle, the second pointer will make at least one full cycle and then meet the first pointer during the next few cycle loops. If the cycle length is $\lambda$ and the $\mu$ is the first index at which the cycle starts, then the algorithm will run in $O(\lambda + \mu)$ time. -This algorithm is also known as **tortoise and the hare algorithm**, based on the tale in which a tortoise (here a slow pointer) and a hare (here a faster pointer) make a race. +This algorithm is also known as **[tortoise and the hare algorithm]**, based on the tale in which a tortoise (here a slow pointer) and a hare (here a faster pointer) make a race. It is actually possible to determine the parameter $\lambda$ and $\mu$ using this algorithm (also in $O(\lambda + \mu)$ time and $O(1)$ space), but here is just the simplified version for finding the cycle at all. The algorithm and returns true as soon as it detects a cycle. From c94db367605921cd74f1cdc6c00a1a931b5cefd5 Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 10 Sep 2023 10:06:32 +0200 Subject: [PATCH 020/454] Fix link --- src/algebra/factorization.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/algebra/factorization.md b/src/algebra/factorization.md index 4a7625e3c..fbd05ff12 100644 --- a/src/algebra/factorization.md +++ b/src/algebra/factorization.md @@ -271,7 +271,9 @@ In each iteration the first pointer advances to the next element, but the second It's not hard to see, that if there exists a cycle, the second pointer will make at least one full cycle and then meet the first pointer during the next few cycle loops. If the cycle length is $\lambda$ and the $\mu$ is the first index at which the cycle starts, then the algorithm will run in $O(\lambda + \mu)$ time. -This algorithm is also known as **[tortoise and the hare algorithm]**, based on the tale in which a tortoise (here a slow pointer) and a hare (here a faster pointer) make a race. +This algorithm is also known as the [Tortoise and Hare algorithm](data_structures/hare_tortoise_algorithm.md), based on the tale in which a tortoise (here a slow pointer) and a hare (here a faster pointer) make a race. + +src/data_structures/hare_tortoise_algorithm.md It is actually possible to determine the parameter $\lambda$ and $\mu$ using this algorithm (also in $O(\lambda + \mu)$ time and $O(1)$ space), but here is just the simplified version for finding the cycle at all. The algorithm and returns true as soon as it detects a cycle. From e788fd61e9e7f14b724a9fc11165cf4652939d57 Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 10 Sep 2023 10:20:59 +0200 Subject: [PATCH 021/454] move tortoise and hare to others section --- src/algebra/factorization.md | 4 +--- src/navigation.md | 2 +- .../tortoise_and_hare.md} | 0 .../tortoise_hare_algo.png | Bin .../tortoise_hare_proof.png | Bin .../tortouse_hare_cycle_found.png | Bin 6 files changed, 2 insertions(+), 4 deletions(-) rename src/{data_structures/hare_tortoise_algorithm.md => others/tortoise_and_hare.md} (100%) rename src/{data_structures => others}/tortoise_hare_algo.png (100%) rename src/{data_structures => others}/tortoise_hare_proof.png (100%) rename src/{data_structures => others}/tortouse_hare_cycle_found.png (100%) diff --git a/src/algebra/factorization.md b/src/algebra/factorization.md index fbd05ff12..c7527feae 100644 --- a/src/algebra/factorization.md +++ b/src/algebra/factorization.md @@ -271,9 +271,7 @@ In each iteration the first pointer advances to the next element, but the second It's not hard to see, that if there exists a cycle, the second pointer will make at least one full cycle and then meet the first pointer during the next few cycle loops. If the cycle length is $\lambda$ and the $\mu$ is the first index at which the cycle starts, then the algorithm will run in $O(\lambda + \mu)$ time. -This algorithm is also known as the [Tortoise and Hare algorithm](data_structures/hare_tortoise_algorithm.md), based on the tale in which a tortoise (here a slow pointer) and a hare (here a faster pointer) make a race. - -src/data_structures/hare_tortoise_algorithm.md +This algorithm is also known as the [Tortoise and Hare algorithm](../others/tortoise_and_hare.md), based on the tale in which a tortoise (here a slow pointer) and a hare (here a faster pointer) make a race. It is actually possible to determine the parameter $\lambda$ and $\mu$ using this algorithm (also in $O(\lambda + \mu)$ time and $O(1)$ space), but here is just the simplified version for finding the cycle at all. The algorithm and returns true as soon as it detects a cycle. diff --git a/src/navigation.md b/src/navigation.md index e11a9e06b..7a1c1961f 100644 --- a/src/navigation.md +++ b/src/navigation.md @@ -50,7 +50,6 @@ search: - Fundamentals - [Minimum Stack / Minimum Queue](data_structures/stack_queue_modification.md) - [Sparse Table](data_structures/sparse-table.md) - - [Hare Tortoise Algorithm (Linked List cycle detection)](data_structures/hare_tortoise_algorithm.md) - Trees - [Disjoint Set Union](data_structures/disjoint_set_union.md) - [Fenwick Tree](data_structures/fenwick.md) @@ -212,6 +211,7 @@ search: - [Scheduling jobs on two machines](schedules/schedule_two_machines.md) - [Optimal schedule of jobs given their deadlines and durations](schedules/schedule-with-completion-duration.md) - Miscellaneous + - [Tortoise and Hare Algorithm (Linked List cycle detection)](others/tortoise_and_hare.md) - [Josephus problem](others/josephus_problem.md) - [15 Puzzle Game: Existence Of The Solution](others/15-puzzle.md) - [The Stern-Brocot Tree and Farey Sequences](others/stern_brocot_tree_farey_sequences.md) diff --git a/src/data_structures/hare_tortoise_algorithm.md b/src/others/tortoise_and_hare.md similarity index 100% rename from src/data_structures/hare_tortoise_algorithm.md rename to src/others/tortoise_and_hare.md diff --git a/src/data_structures/tortoise_hare_algo.png b/src/others/tortoise_hare_algo.png similarity index 100% rename from src/data_structures/tortoise_hare_algo.png rename to src/others/tortoise_hare_algo.png diff --git a/src/data_structures/tortoise_hare_proof.png b/src/others/tortoise_hare_proof.png similarity index 100% rename from src/data_structures/tortoise_hare_proof.png rename to src/others/tortoise_hare_proof.png diff --git a/src/data_structures/tortouse_hare_cycle_found.png b/src/others/tortouse_hare_cycle_found.png similarity index 100% rename from src/data_structures/tortouse_hare_cycle_found.png rename to src/others/tortouse_hare_cycle_found.png From 4cb750d759a69d199464efa5725f9511fcd59a93 Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 10 Sep 2023 10:22:44 +0200 Subject: [PATCH 022/454] add tortoise and hare to new article section --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f3c76cabb..2bb00d5d4 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Compiled pages are published at [https://cp-algorithms.com/](https://cp-algorith ### New articles +- (10 September 2023) [Tortoise and Hare Algorithm](https://cp-algorithms.com/others/tortoise_and_hare.html) - (12 July 2023) [Finding faces of a planar graph](https://cp-algorithms.com/geometry/planar.html) - (18 April 2023) [Bit manipulation](https://cp-algorithms.com/algebra/bit-manipulation.html) - (17 October 2022) [Binary Search](https://cp-algorithms.com/num_methods/binary_search.html) From b296cc4dbb58e88339e887d9db06194b6a4de93e Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 10 Sep 2023 10:31:19 +0200 Subject: [PATCH 023/454] fix showing images --- src/others/tortoise_and_hare.md | 7 +++---- ...ycle_found.png => tortoise_hare_cycle_found.png} | Bin 2 files changed, 3 insertions(+), 4 deletions(-) rename src/others/{tortouse_hare_cycle_found.png => tortoise_hare_cycle_found.png} (100%) diff --git a/src/others/tortoise_and_hare.md b/src/others/tortoise_and_hare.md index 83fad231a..ba0240579 100644 --- a/src/others/tortoise_and_hare.md +++ b/src/others/tortoise_and_hare.md @@ -1,4 +1,3 @@ - --- tags: - Original @@ -8,7 +7,7 @@ tags: Given a linked list where the starting point of that linked list is denoted by **head**, and there may or may not be a cycle present. For instance: -![[tortoise_hare_algo.png]] +
!["Linked list with cycle"](tortoise_hare_algo.png)
Here we need to find out the point **C**, i.e the starting point of the cycle. @@ -28,7 +27,7 @@ So, it involved two steps: 6. If they point to any same node at any point of their journey, it would indicate that the cycle indeed exists in the linked list. 7. If we get null, it would indicate that the linked list has no cycle. -![[tortouse_hare_cycle_found.png]] +
!["Found cycle"](tortoise_hare_cycle_found.png)
Now, that we have figured out that there is a cycle present in the linked list, for the next step we need to find out the starting point of cycle, i.e., **C**. ### Step 2: Starting point of the cycle @@ -82,7 +81,7 @@ When the slow pointer has moved $k \cdot L$ steps, and the fast pointer has cove Lets try to calculate the distance covered by both of the pointers till they point they met within the cycle. -![[tortoise_hare_proof.png]] +
!["Proof"](tortoise_hare_proof.png)
$slowDist = a + xL + b$ $x\ge0$ diff --git a/src/others/tortouse_hare_cycle_found.png b/src/others/tortoise_hare_cycle_found.png similarity index 100% rename from src/others/tortouse_hare_cycle_found.png rename to src/others/tortoise_hare_cycle_found.png From eb09530f563e39c51c9c181fe9791f8166270083 Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 10 Sep 2023 10:47:13 +0200 Subject: [PATCH 024/454] better proof image --- src/others/tortoise_hare_proof.png | Bin 27733 -> 32308 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/others/tortoise_hare_proof.png b/src/others/tortoise_hare_proof.png index 69e4fae343b09f38782bed2312c973a4f1d85bb6..bd62b57a26d44d9300904509df0bb231d877289c 100644 GIT binary patch literal 32308 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 Klq!=n4ER6cDhG}L literal 27733 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 Date: Tue, 12 Sep 2023 21:50:59 +0600 Subject: [PATCH 025/454] Refactor variable name Refactor variable name to align with written description --- src/algebra/binary-exp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/algebra/binary-exp.md b/src/algebra/binary-exp.md index c57a66db3..52dfd27a5 100644 --- a/src/algebra/binary-exp.md +++ b/src/algebra/binary-exp.md @@ -144,13 +144,13 @@ vector applyPermutation(vector sequence, vector permutation) { return newSequence; } -vector permute(vector sequence, vector permutation, long long b) { - while (b > 0) { - if (b & 1) { +vector permute(vector sequence, vector permutation, long long k) { + while (k > 0) { + if (k & 1) { sequence = applyPermutation(sequence, permutation); } permutation = applyPermutation(permutation, permutation); - b >>= 1; + k >>= 1; } return sequence; } From 1348bc7abd4645d26addb15a3704e4c586879a32 Mon Sep 17 00:00:00 2001 From: Kanwae Kan <44528106+kanwaekan@users.noreply.github.com> Date: Wed, 13 Sep 2023 14:04:23 +0530 Subject: [PATCH 026/454] Added a comma for clarity --- src/others/tortoise_and_hare.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/others/tortoise_and_hare.md b/src/others/tortoise_and_hare.md index ba0240579..efe444273 100644 --- a/src/others/tortoise_and_hare.md +++ b/src/others/tortoise_and_hare.md @@ -83,9 +83,9 @@ Lets try to calculate the distance covered by both of the pointers till they poi
!["Proof"](tortoise_hare_proof.png)
-$slowDist = a + xL + b$ $x\ge0$ +$slowDist = a + xL + b$ , $x\ge0$ -$fastDist = a + yL + b$ $y\ge0$ +$fastDist = a + yL + b$ , $y\ge0$ - $slowDist$ is the total distance covered by slow pointer. - $fastDist$ is the total distance covered by fast pointer. From 64e7f287c10b411a25d0ec516537b68424075c23 Mon Sep 17 00:00:00 2001 From: Kanwae Kan <44528106+kanwaekan@users.noreply.github.com> Date: Wed, 13 Sep 2023 14:11:02 +0530 Subject: [PATCH 027/454] Minor error in Equation --- src/others/tortoise_and_hare.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/others/tortoise_and_hare.md b/src/others/tortoise_and_hare.md index efe444273..71405975e 100644 --- a/src/others/tortoise_and_hare.md +++ b/src/others/tortoise_and_hare.md @@ -94,7 +94,7 @@ $fastDist = a + yL + b$ , $y\ge0$ - $x$ is the number of times the slow pointer has looped inside the cycle, starting from and ending at **C**. - $y$ is the number of times the fast pointer has looped inside the cycle, starting from and ending at **C**. -$slowDist = 2 \cdot (fastDist)$ +$fastDist = 2 \cdot (slowDist)$ $a + yL + b = 2(a + xL + b)$ From d71651b14f3dc57c451ff7f467459a38770ecc7e Mon Sep 17 00:00:00 2001 From: fffelix-huang Date: Sat, 16 Sep 2023 22:08:10 +0800 Subject: [PATCH 028/454] Fix typos --- src/graph/bridge-searching-online.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/graph/bridge-searching-online.md b/src/graph/bridge-searching-online.md index da3af4402..702dc5a88 100644 --- a/src/graph/bridge-searching-online.md +++ b/src/graph/bridge-searching-online.md @@ -79,7 +79,7 @@ We will now consistently disassemble every operation that we need to learn to im For example you can re-root the tree of vertex $a$, and then attach it to another tree by setting the ancestor of $a$ to $b$. However the question about the effectiveness of the re-rooting operation arises: - in order to re-root the tree with the root $r$ to the vertex $v$, it is necessary to necessary to visit all vertices on the path between $v$ and $r$ and redirect the pointers `par[]` in the opposite direction, and also change the references to the ancestors in the DSU that is responsible for the connected components. + in order to re-root the tree with the root $r$ to the vertex $v$, it is necessary to visit all vertices on the path between $v$ and $r$ and redirect the pointers `par[]` in the opposite direction, and also change the references to the ancestors in the DSU that is responsible for the connected components. Thus, the cost of re-rooting is $O(h)$, where $h$ is the height of the tree. You can make an even worse estimate by saying that the cost is $O(\text{size})$ where $\text{size}$ is the number of vertices in the tree. @@ -103,7 +103,7 @@ We will now consistently disassemble every operation that we need to learn to im * Searching for the cycle formed by adding a new edge $(a, b)$. Since $a$ and $b$ are already connected in the tree we need to find the [Lowest Common Ancestor](lca.md) of the vertices $a$ and $b$. - The cycle will consist of the paths from $b$ to the LCA, from the LCA to $b$ and the edge $a$ to $b$. + The cycle will consist of the paths from $b$ to the LCA, from the LCA to $a$ and the edge $a$ to $b$. After finding the cycle we compress all vertices of the detected cycle into one vertex. This means that we already have a complexity proportional to the cycle length, which means that we also can use any LCA algorithm proportional to the length, and don't have to use any fast one. From 0b231a6f40847151deeb3d1f9fc24ba18e9ac49e Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 17 Sep 2023 18:48:17 +0200 Subject: [PATCH 029/454] add problem to max flow --- src/graph/edmonds_karp.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/graph/edmonds_karp.md b/src/graph/edmonds_karp.md index 1b74cd3bb..29753eba1 100644 --- a/src/graph/edmonds_karp.md +++ b/src/graph/edmonds_karp.md @@ -213,3 +213,4 @@ This partition can be easily found using [DFS](depth-first-search.md) starting a - [CSES - Download Speed](https://cses.fi/problemset/task/1694) - [CSES - Police Chase](https://cses.fi/problemset/task/1695) - [CSES - School Dance](https://cses.fi/problemset/task/1696) +- [CSES - Distinct Routes](https://cses.fi/problemset/task/1711) From 9e76b3bb6709383fcb2b6ce4073a4a8e54f6853c Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 17 Sep 2023 18:58:19 +0200 Subject: [PATCH 030/454] spelling --- src/data_structures/segment_tree.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data_structures/segment_tree.md b/src/data_structures/segment_tree.md index 67090a82e..1b212868b 100644 --- a/src/data_structures/segment_tree.md +++ b/src/data_structures/segment_tree.md @@ -602,7 +602,7 @@ This leads to a construction time of $O(n \log^2 n)$ (in general merging two red The $\text{query}$ function is also almost equivalent, only now the $\text{lower_bound}$ function of the $\text{multiset}$ function should be called instead ($\text{std::lower_bound}$ only works in $O(\log n)$ time if used with random-access iterators). Finally the modification request. -To process it, we must go down the tree, and modify all $\text{multiset}$ from the corresponding segments that contain the effected element. +To process it, we must go down the tree, and modify all $\text{multiset}$ from the corresponding segments that contain the affected element. We simply delete the old value of this element (but only one occurrence), and insert the new value. ```cpp @@ -682,7 +682,7 @@ other Segment Trees (somewhat discussed in [Generalization to higher dimensions] ### Range updates (Lazy Propagation) -All problems in the above sections discussed modification queries that only effected a single element of the array each. +All problems in the above sections discussed modification queries that only affected a single element of the array each. However the Segment Tree allows applying modification queries to an entire segment of contiguous elements, and perform the query in the same time $O(\log n)$. #### Addition on segments From 3a91b300823acc6e31f061c43a8f06fc0039e7cb Mon Sep 17 00:00:00 2001 From: 100GODMOON <86097037+100godmoon@users.noreply.github.com> Date: Mon, 18 Sep 2023 00:08:26 +0530 Subject: [PATCH 031/454] Update binary_search.md Added more problems on binary search article #1147 --- src/num_methods/binary_search.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/num_methods/binary_search.md b/src/num_methods/binary_search.md index a95db3c32..f44809c2e 100644 --- a/src/num_methods/binary_search.md +++ b/src/num_methods/binary_search.md @@ -138,6 +138,10 @@ This paradigm is widely used in tasks around trees, such as finding lowest commo * [LeetCode - Find First and Last Position of Element in Sorted Array](https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/) * [LeetCode - Search Insert Position](https://leetcode.com/problems/search-insert-position/) +* [LeetCode - Find Peak Element](https://leetcode.com/problems/find-peak-element/) +* [LeetCode - Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/) +* [LeetCode - Find the Duplicate Number](https://leetcode.com/problems/find-the-duplicate-number/) +* [LeetCode - Find Right Interval](https://leetcode.com/problems/find-right-interval/) * [LeetCode - Sqrt(x)](https://leetcode.com/problems/sqrtx/) * [LeetCode - First Bad Version](https://leetcode.com/problems/first-bad-version/) * [LeetCode - Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/) From afe32e8a6766be3d0eddcf97c2cdf3e71ae5655a Mon Sep 17 00:00:00 2001 From: JustAnAverageGuy <68919330+JustAnAverageGuy@users.noreply.github.com> Date: Fri, 22 Sep 2023 16:47:11 +0530 Subject: [PATCH 032/454] Update point-location.md Changed an incorrect double negative typo to the intended meaning. --- src/geometry/point-location.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/geometry/point-location.md b/src/geometry/point-location.md index 4c9ca883d..10c0d3f51 100644 --- a/src/geometry/point-location.md +++ b/src/geometry/point-location.md @@ -5,7 +5,7 @@ tags: --- # Point location in $O(log n)$ -Consider the following problem: you are given a [planar subdivision](https://en.wikipedia.org/wiki/Planar_straight-line_graph) without no vertices of degree one and zero, and a lot of queries. +Consider the following problem: you are given a [planar subdivision](https://en.wikipedia.org/wiki/Planar_straight-line_graph) without any vertices of degree one and zero, and a lot of queries. Each query is a point, for which we should determine the face of the subdivision it belongs to. We will answer each query in $O(\log n)$ offline.
This problem may arise when you need to locate some points in a Voronoi diagram or in some simple polygon. From 44c507ea63e13543f7dcf34192c6daa32cdac829 Mon Sep 17 00:00:00 2001 From: sumitrawat10 <47861908+sumitrawat10@users.noreply.github.com> Date: Sat, 23 Sep 2023 22:18:18 +0530 Subject: [PATCH 033/454] Update 2SAT.md Just a typo --- src/graph/2SAT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graph/2SAT.md b/src/graph/2SAT.md index f22da73f6..ac8b83446 100644 --- a/src/graph/2SAT.md +++ b/src/graph/2SAT.md @@ -14,7 +14,7 @@ Find an assignment of $a, b, c$ such that the following formula is true: $$(a \lor \lnot b) \land (\lnot a \lor b) \land (\lnot a \lor \lnot b) \land (a \lor \lnot c)$$ -SAT is NP-complete, there is no known efficient solution known for it. +SAT is NP-complete, there is no known efficient solution for it. However 2SAT can be solved efficiently in $O(n + m)$ where $n$ is the number of variables and $m$ is the number of clauses. ## Algorithm: From 79b311ae29026b2ab2e6ec323b28d1d0d027ceb6 Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 24 Sep 2023 19:24:14 +0200 Subject: [PATCH 034/454] remove navigation tracking fixes #1153 --- mkdocs.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 4403365d6..8a049c265 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -22,7 +22,6 @@ theme: icon: repo: fontawesome/brands/github features: - - navigation.tracking - navigation.tabs - toc.integrate - search.suggest From 6337369b623699506735fd6a547af519f325fb11 Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 24 Sep 2023 19:32:19 +0200 Subject: [PATCH 035/454] enable permalink next to sections --- mkdocs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index 8a049c265..c6b402e5e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -52,6 +52,8 @@ markdown_extensions: emoji_index: !!python/name:materialx.emoji.twemoji emoji_generator: !!python/name:materialx.emoji.to_svg - meta + - toc: + permalink: true plugins: - mkdocs-simple-hooks: From 3af207a4c444520870e2b3ef3003bdc5201ac782 Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 24 Sep 2023 19:37:38 +0200 Subject: [PATCH 036/454] move practice problem to the binary lifting article --- src/graph/lca_binary_lifting.md | 1 + src/num_methods/binary_search.md | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graph/lca_binary_lifting.md b/src/graph/lca_binary_lifting.md index e8f51dc94..72b47291a 100644 --- a/src/graph/lca_binary_lifting.md +++ b/src/graph/lca_binary_lifting.md @@ -95,4 +95,5 @@ void preprocess(int root) { ``` ## Practice Problems +* [LeetCode - Kth Ancestor of a Tree Node](https://leetcode.com/problems/kth-ancestor-of-a-tree-node) * [Codechef - Longest Good Segment](https://www.codechef.com/problems/LGSEG) diff --git a/src/num_methods/binary_search.md b/src/num_methods/binary_search.md index 31332a209..a95db3c32 100644 --- a/src/num_methods/binary_search.md +++ b/src/num_methods/binary_search.md @@ -143,7 +143,6 @@ This paradigm is widely used in tasks around trees, such as finding lowest commo * [LeetCode - Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/) * [LeetCode - Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower/) * [LeetCode - Search a 2D Matrix II](https://leetcode.com/problems/search-a-2d-matrix-ii/) -* [LeetCode - Kth Ancestor of a Tree Node](https://leetcode.com/problems/kth-ancestor-of-a-tree-node) * [Codeforces - Interesting Drink](https://codeforces.com/problemset/problem/706/B/) * [Codeforces - Magic Powder - 1](https://codeforces.com/problemset/problem/670/D1) * [Codeforces - Another Problem on Strings](https://codeforces.com/problemset/problem/165/C) From 7935df482fb2c8fe7e239851bdb6c4ddad5d116f Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 24 Sep 2023 19:42:01 +0200 Subject: [PATCH 037/454] fix some absolute links --- src/data_structures/sqrt-tree.md | 2 +- src/others/josephus_problem.md | 2 +- src/string/manacher.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/data_structures/sqrt-tree.md b/src/data_structures/sqrt-tree.md index 0bfefe772..19e8bc6e4 100644 --- a/src/data_structures/sqrt-tree.md +++ b/src/data_structures/sqrt-tree.md @@ -17,7 +17,7 @@ Sqrt Tree can process such queries in $O(1)$ time with $O(n \cdot \log \log n)$ ### Building sqrt decomposition -Let's make a [sqrt decomposition](/data_structures/sqrt_decomposition.html). We divide our array in $\sqrt{n}$ blocks, each block has size $\sqrt{n}$. For each block, we compute: +Let's make a [sqrt decomposition](sqrt_decomposition.md). We divide our array in $\sqrt{n}$ blocks, each block has size $\sqrt{n}$. For each block, we compute: 1. Answers to the queries that lie in the block and begin at the beginning of the block ($\text{prefixOp}$) 2. Answers to the queries that lie in the block and end at the end of the block ($\text{suffixOp}$) diff --git a/src/others/josephus_problem.md b/src/others/josephus_problem.md index 3599034eb..5200d0ad4 100644 --- a/src/others/josephus_problem.md +++ b/src/others/josephus_problem.md @@ -18,7 +18,7 @@ It is required to find the last number. This task was set by **Flavius Josephus** in the 1st century (though in a somewhat narrower formulation: for $k = 2$). This problem can be solved by modeling the procedure. -Brute force modeling will work $O(n^{2})$. Using a [Segment Tree](/data_structures/segment_tree.html), we can improve it to $O(n \log n)$. +Brute force modeling will work $O(n^{2})$. Using a [Segment Tree](../data_structures/segment_tree.md), we can improve it to $O(n \log n)$. We want something better though. ## Modeling a $O(n)$ solution diff --git a/src/string/manacher.md b/src/string/manacher.md index 78e0c677d..2c7cb35b6 100644 --- a/src/string/manacher.md +++ b/src/string/manacher.md @@ -32,7 +32,7 @@ It's a surprising fact that there is an algorithm, which is simple enough, that ## Solution -In general, this problem has many solutions: with [String Hashing](/string/string-hashing.html) it can be solved in $O(n\cdot \log n)$, and with [Suffix Trees](/string/suffix-tree-ukkonen.html) and fast LCA this problem can be solved in $O(n)$. +In general, this problem has many solutions: with [String Hashing](string-hashing.md) it can be solved in $O(n\cdot \log n)$, and with [Suffix Trees](suffix-tree-ukkonen.md) and fast LCA this problem can be solved in $O(n)$. But the method described here is **sufficiently** simpler and has less hidden constant in time and memory complexity. This algorithm was discovered by **Glenn K. Manacher** in 1975. @@ -124,7 +124,7 @@ Again, we should not forget to update the values $(l, r)$ after calculating each At the first glance it's not obvious that this algorithm has linear time complexity, because we often run the naive algorithm while searching the answer for a particular position. -However, a more careful analysis shows that the algorithm is linear. In fact, [Z-function building algorithm](/string/z-function.html), which looks similar to this algorithm, also works in linear time. +However, a more careful analysis shows that the algorithm is linear. In fact, [Z-function building algorithm](z-function.md), which looks similar to this algorithm, also works in linear time. We can notice that every iteration of trivial algorithm increases $r$ by one. Also $r$ cannot be decreased during the algorithm. So, trivial algorithm will make $O(n)$ iterations in total. From db087ac079f24c2b1eca58ac4dc0e7c88b0642fc Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 24 Sep 2023 20:22:52 +0200 Subject: [PATCH 038/454] remove some problems --- src/num_methods/binary_search.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/num_methods/binary_search.md b/src/num_methods/binary_search.md index f44809c2e..6aa488729 100644 --- a/src/num_methods/binary_search.md +++ b/src/num_methods/binary_search.md @@ -138,15 +138,11 @@ This paradigm is widely used in tasks around trees, such as finding lowest commo * [LeetCode - Find First and Last Position of Element in Sorted Array](https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/) * [LeetCode - Search Insert Position](https://leetcode.com/problems/search-insert-position/) +* [LeetCode - First Bad Version](https://leetcode.com/problems/first-bad-version/) +* [LeetCode - Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/) * [LeetCode - Find Peak Element](https://leetcode.com/problems/find-peak-element/) * [LeetCode - Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/) -* [LeetCode - Find the Duplicate Number](https://leetcode.com/problems/find-the-duplicate-number/) * [LeetCode - Find Right Interval](https://leetcode.com/problems/find-right-interval/) -* [LeetCode - Sqrt(x)](https://leetcode.com/problems/sqrtx/) -* [LeetCode - First Bad Version](https://leetcode.com/problems/first-bad-version/) -* [LeetCode - Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/) -* [LeetCode - Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower/) -* [LeetCode - Search a 2D Matrix II](https://leetcode.com/problems/search-a-2d-matrix-ii/) * [Codeforces - Interesting Drink](https://codeforces.com/problemset/problem/706/B/) * [Codeforces - Magic Powder - 1](https://codeforces.com/problemset/problem/670/D1) * [Codeforces - Another Problem on Strings](https://codeforces.com/problemset/problem/165/C) From 1810d127f6f075ad47db88b3fc49d477dc2cb2e9 Mon Sep 17 00:00:00 2001 From: Jakob Kogler Date: Sun, 24 Sep 2023 20:27:05 +0200 Subject: [PATCH 039/454] fix broken link --- src/preview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/preview.md b/src/preview.md index 775d4fe87..e0ffe3866 100644 --- a/src/preview.md +++ b/src/preview.md @@ -29,7 +29,7 @@ # Article Preview -Information for contributors +Information for contributors