Skip to content

Repository files navigation

Fast Algorithms in Data Structures

LectureTopicSolution
2020-10-02 LAQ (Level Ancestor Query) pt.1
2020-10-09 (Level Ancestor Query) pt.2
2020-10-02 LAQ (Level Ancestor Query) pt.3
LA-Problem (Cai Qi)
LA-Problem (Bender, Farach-Colton)
LA ProblemTable:O(n^2,1)
Long-Paths:O(n,sqrt(n))
Jump pointers:O(nlog(n),log(n))
Ladders:O(n,log(n))
Preorder traversal: Analysis
Binary search:O(n,log(n))
Ladders & Jump pointers:O(nlog(n),1))
Input(tree & file)
2020-10-16 LCA (Lowest Common Ancestor),
RMQ (Range Minimum Quert) pt.1

2020-10-23 LCA, RMQ pt.2
2020-10-30 Solving RMQ by finding LCA)
LCA-RMQ ProblemLCA Query
LCA, Sparse Table: O(nlog(n),1)
Distance Query
Solution 1.cpp O(n.log(n),log(n))
Solution 2.cpp O(n.log(n),log(n))
2020-11-06 Perfect HashPerfect Hash
2020-11-13 Willard Algorithmx-fast, y-fast trees
van Emde Boas Tree, idea and intuition
2020-11-20 van Emde Boas Trees
vEB Additional Analysis
van Emde Boas treesvanEmdeBoasTree.cpp O(n,log(log(n)))
vEB MIT (Overview)
2020-11-27 Suffix Automaton pt.1, 2 & 3
Project 2021-01-10
Test Case 01
Test Case 02

Записки по „Езици, автомати, изчислимост“
(Стефан Вътев)
Blumer et. al. AlgorithmSuffixAutomaton.cpp

General Suffix Automaton Construction
Algorithmand Space Bounds
(Mehryar Mohri, Pedro Moreno, Eugene Weinstein)

THE SMALLEST AUTOMATON RECOGNIZING
THE SUBWORDS OF A TEXT*
(A.BLUMER, J.BLUMER and D.HAUSSLER)
2020-12-11 Ukkonen's Algorithm pt. 1
2020-12-18 Ukkonen's Algorithm pt. 2
Suffix Tree
2021-01-08 Lempel-Ziv, Suffix Arrays pt.1
2021-01-08 Lempel-Ziv, Suffix Arrays pt.2
Lempel-Ziv Algorithm
Information Theory
Suffix Arrays
2021-01-15 Dynamization of Static Data Structures pt.1
2021-01-22 Dynamization of Static Data Structures pt.2
Dynamization of Static Data Structures

Treap

TreapsFast Set Operations Using Treaps
ProblemsSolutions
SPOJ - ADAAPHID - Ada and Aphids
I/O Explanation
ADAAPHID.cpp
SPOJ - ADACROP - Ada and HarvestADACROP.cpp
Codeforces - E. Radio stations762E.cpp
SPOJ - COUNT1IT - Ghost TownCOUNT1IT.cpp
SPOJ - IITWPC4D - Arrangement ValidityIITWPC4D.cpp
SPOJ - All in OneALLIN1.cpp
Codeforces - D. Dog Show847D (Treap).cpp
847D (priority queue).cpp
Codeforces - Yet Another Array Queries Problem863D (Implicit).cpp
863D (reverse queries).cpp
SPOJ - MEANARR - Mean of arrayMEANARR.cpp
SPOJ - Twist and whirl - want to cheatTWIST (insert via split & merge).cpp
TWIST (insert via merge).cpp
SPOJ - KOILINE - Line upKOILINE.cpp
CodeChef - The PrestigePRESTIGE.cpp
Codeforces F. T-Shirts702F (breaking into intervals).cpp
702F (Algorithms using Treap).pdf
702F (Treap).cpp
Codeforces - Wizards and Roads167D.cpp
Codeforces - Yaroslav and Points295E.cpp
Codeforces - Letters Removing899F.cpp
Codeforces – Irrigation1181D.pdf
1181D.cpp
Hackerrank – Running medianRunningMedian (Split by count – implicit key).cpp
RunningMedian (kthSmallest).cpp
Running Median (Probabilistic Heaps).cpp
Running Median (Ordinary Heaps).cpp
USP2019-W8-AUSP2019-W8-A (Range sum and reverse).cpp

Lowest Common Ancestor

ProblemsSolutions
LCA – Lowest Common AncestorLCA – Lowest Common Ancestor–1 (euler tour and sparse table).cpp
DISQUERY– Distance QueryDISQUERY – Distance Query–1 (jump pointers).cpp
DISQUERY – Distance Query–2.cpp

About

Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - andy489/Fast_Algorithms_in_Data_Structures: Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations. · GitHub
Skip to content

Repository files navigation

Fast Algorithms in Data Structures

LectureTopicSolution
2020-10-02 LAQ (Level Ancestor Query) pt.1
2020-10-09 (Level Ancestor Query) pt.2
2020-10-02 LAQ (Level Ancestor Query) pt.3
LA-Problem (Cai Qi)
LA-Problem (Bender, Farach-Colton)
LA ProblemTable:O(n^2,1)
Long-Paths:O(n,sqrt(n))
Jump pointers:O(nlog(n),log(n))
Ladders:O(n,log(n))
Preorder traversal: Analysis
Binary search:O(n,log(n))
Ladders & Jump pointers:O(nlog(n),1))
Input(tree & file)
2020-10-16 LCA (Lowest Common Ancestor),
RMQ (Range Minimum Quert) pt.1

2020-10-23 LCA, RMQ pt.2
2020-10-30 Solving RMQ by finding LCA)
LCA-RMQ ProblemLCA Query
LCA, Sparse Table: O(nlog(n),1)
Distance Query
Solution 1.cpp O(n.log(n),log(n))
Solution 2.cpp O(n.log(n),log(n))
2020-11-06 Perfect HashPerfect Hash
2020-11-13 Willard Algorithmx-fast, y-fast trees
van Emde Boas Tree, idea and intuition
2020-11-20 van Emde Boas Trees
vEB Additional Analysis
van Emde Boas treesvanEmdeBoasTree.cpp O(n,log(log(n)))
vEB MIT (Overview)
2020-11-27 Suffix Automaton pt.1, 2 & 3
Project 2021-01-10
Test Case 01
Test Case 02

Записки по „Езици, автомати, изчислимост“
(Стефан Вътев)
Blumer et. al. AlgorithmSuffixAutomaton.cpp

General Suffix Automaton Construction
Algorithmand Space Bounds
(Mehryar Mohri, Pedro Moreno, Eugene Weinstein)

THE SMALLEST AUTOMATON RECOGNIZING
THE SUBWORDS OF A TEXT*
(A.BLUMER, J.BLUMER and D.HAUSSLER)
2020-12-11 Ukkonen's Algorithm pt. 1
2020-12-18 Ukkonen's Algorithm pt. 2
Suffix Tree
2021-01-08 Lempel-Ziv, Suffix Arrays pt.1
2021-01-08 Lempel-Ziv, Suffix Arrays pt.2
Lempel-Ziv Algorithm
Information Theory
Suffix Arrays
2021-01-15 Dynamization of Static Data Structures pt.1
2021-01-22 Dynamization of Static Data Structures pt.2
Dynamization of Static Data Structures

Treap

TreapsFast Set Operations Using Treaps
ProblemsSolutions
SPOJ - ADAAPHID - Ada and Aphids
I/O Explanation
ADAAPHID.cpp
SPOJ - ADACROP - Ada and HarvestADACROP.cpp
Codeforces - E. Radio stations762E.cpp
SPOJ - COUNT1IT - Ghost TownCOUNT1IT.cpp
SPOJ - IITWPC4D - Arrangement ValidityIITWPC4D.cpp
SPOJ - All in OneALLIN1.cpp
Codeforces - D. Dog Show847D (Treap).cpp
847D (priority queue).cpp
Codeforces - Yet Another Array Queries Problem863D (Implicit).cpp
863D (reverse queries).cpp
SPOJ - MEANARR - Mean of arrayMEANARR.cpp
SPOJ - Twist and whirl - want to cheatTWIST (insert via split & merge).cpp
TWIST (insert via merge).cpp
SPOJ - KOILINE - Line upKOILINE.cpp
CodeChef - The PrestigePRESTIGE.cpp
Codeforces F. T-Shirts702F (breaking into intervals).cpp
702F (Algorithms using Treap).pdf
702F (Treap).cpp
Codeforces - Wizards and Roads167D.cpp
Codeforces - Yaroslav and Points295E.cpp
Codeforces - Letters Removing899F.cpp
Codeforces – Irrigation1181D.pdf
1181D.cpp
Hackerrank – Running medianRunningMedian (Split by count – implicit key).cpp
RunningMedian (kthSmallest).cpp
Running Median (Probabilistic Heaps).cpp
Running Median (Ordinary Heaps).cpp
USP2019-W8-AUSP2019-W8-A (Range sum and reverse).cpp

Lowest Common Ancestor

ProblemsSolutions
LCA – Lowest Common AncestorLCA – Lowest Common Ancestor–1 (euler tour and sparse table).cpp
DISQUERY– Distance QueryDISQUERY – Distance Query–1 (jump pointers).cpp
DISQUERY – Distance Query–2.cpp

About

Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - andy489/Fast_Algorithms_in_Data_Structures: Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations. · GitHub
Skip to content

Repository files navigation

Fast Algorithms in Data Structures

LectureTopicSolution
2020-10-02 LAQ (Level Ancestor Query) pt.1
2020-10-09 (Level Ancestor Query) pt.2
2020-10-02 LAQ (Level Ancestor Query) pt.3
LA-Problem (Cai Qi)
LA-Problem (Bender, Farach-Colton)
LA ProblemTable:O(n^2,1)
Long-Paths:O(n,sqrt(n))
Jump pointers:O(nlog(n),log(n))
Ladders:O(n,log(n))
Preorder traversal: Analysis
Binary search:O(n,log(n))
Ladders & Jump pointers:O(nlog(n),1))
Input(tree & file)
2020-10-16 LCA (Lowest Common Ancestor),
RMQ (Range Minimum Quert) pt.1

2020-10-23 LCA, RMQ pt.2
2020-10-30 Solving RMQ by finding LCA)
LCA-RMQ ProblemLCA Query
LCA, Sparse Table: O(nlog(n),1)
Distance Query
Solution 1.cpp O(n.log(n),log(n))
Solution 2.cpp O(n.log(n),log(n))
2020-11-06 Perfect HashPerfect Hash
2020-11-13 Willard Algorithmx-fast, y-fast trees
van Emde Boas Tree, idea and intuition
2020-11-20 van Emde Boas Trees
vEB Additional Analysis
van Emde Boas treesvanEmdeBoasTree.cpp O(n,log(log(n)))
vEB MIT (Overview)
2020-11-27 Suffix Automaton pt.1, 2 & 3
Project 2021-01-10
Test Case 01
Test Case 02

Записки по „Езици, автомати, изчислимост“
(Стефан Вътев)
Blumer et. al. AlgorithmSuffixAutomaton.cpp

General Suffix Automaton Construction
Algorithmand Space Bounds
(Mehryar Mohri, Pedro Moreno, Eugene Weinstein)

THE SMALLEST AUTOMATON RECOGNIZING
THE SUBWORDS OF A TEXT*
(A.BLUMER, J.BLUMER and D.HAUSSLER)
2020-12-11 Ukkonen's Algorithm pt. 1
2020-12-18 Ukkonen's Algorithm pt. 2
Suffix Tree
2021-01-08 Lempel-Ziv, Suffix Arrays pt.1
2021-01-08 Lempel-Ziv, Suffix Arrays pt.2
Lempel-Ziv Algorithm
Information Theory
Suffix Arrays
2021-01-15 Dynamization of Static Data Structures pt.1
2021-01-22 Dynamization of Static Data Structures pt.2
Dynamization of Static Data Structures

Treap

TreapsFast Set Operations Using Treaps
ProblemsSolutions
SPOJ - ADAAPHID - Ada and Aphids
I/O Explanation
ADAAPHID.cpp
SPOJ - ADACROP - Ada and HarvestADACROP.cpp
Codeforces - E. Radio stations762E.cpp
SPOJ - COUNT1IT - Ghost TownCOUNT1IT.cpp
SPOJ - IITWPC4D - Arrangement ValidityIITWPC4D.cpp
SPOJ - All in OneALLIN1.cpp
Codeforces - D. Dog Show847D (Treap).cpp
847D (priority queue).cpp
Codeforces - Yet Another Array Queries Problem863D (Implicit).cpp
863D (reverse queries).cpp
SPOJ - MEANARR - Mean of arrayMEANARR.cpp
SPOJ - Twist and whirl - want to cheatTWIST (insert via split & merge).cpp
TWIST (insert via merge).cpp
SPOJ - KOILINE - Line upKOILINE.cpp
CodeChef - The PrestigePRESTIGE.cpp
Codeforces F. T-Shirts702F (breaking into intervals).cpp
702F (Algorithms using Treap).pdf
702F (Treap).cpp
Codeforces - Wizards and Roads167D.cpp
Codeforces - Yaroslav and Points295E.cpp
Codeforces - Letters Removing899F.cpp
Codeforces – Irrigation1181D.pdf
1181D.cpp
Hackerrank – Running medianRunningMedian (Split by count – implicit key).cpp
RunningMedian (kthSmallest).cpp
Running Median (Probabilistic Heaps).cpp
Running Median (Ordinary Heaps).cpp
USP2019-W8-AUSP2019-W8-A (Range sum and reverse).cpp

Lowest Common Ancestor

ProblemsSolutions
LCA – Lowest Common AncestorLCA – Lowest Common Ancestor–1 (euler tour and sparse table).cpp
DISQUERY– Distance QueryDISQUERY – Distance Query–1 (jump pointers).cpp
DISQUERY – Distance Query–2.cpp

About

Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - andy489/Fast_Algorithms_in_Data_Structures: Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations. · GitHub
Skip to content

Repository files navigation

Fast Algorithms in Data Structures

LectureTopicSolution
2020-10-02 LAQ (Level Ancestor Query) pt.1
2020-10-09 (Level Ancestor Query) pt.2
2020-10-02 LAQ (Level Ancestor Query) pt.3
LA-Problem (Cai Qi)
LA-Problem (Bender, Farach-Colton)
LA ProblemTable:O(n^2,1)
Long-Paths:O(n,sqrt(n))
Jump pointers:O(nlog(n),log(n))
Ladders:O(n,log(n))
Preorder traversal: Analysis
Binary search:O(n,log(n))
Ladders & Jump pointers:O(nlog(n),1))
Input(tree & file)
2020-10-16 LCA (Lowest Common Ancestor),
RMQ (Range Minimum Quert) pt.1

2020-10-23 LCA, RMQ pt.2
2020-10-30 Solving RMQ by finding LCA)
LCA-RMQ ProblemLCA Query
LCA, Sparse Table: O(nlog(n),1)
Distance Query
Solution 1.cpp O(n.log(n),log(n))
Solution 2.cpp O(n.log(n),log(n))
2020-11-06 Perfect HashPerfect Hash
2020-11-13 Willard Algorithmx-fast, y-fast trees
van Emde Boas Tree, idea and intuition
2020-11-20 van Emde Boas Trees
vEB Additional Analysis
van Emde Boas treesvanEmdeBoasTree.cpp O(n,log(log(n)))
vEB MIT (Overview)
2020-11-27 Suffix Automaton pt.1, 2 & 3
Project 2021-01-10
Test Case 01
Test Case 02

Записки по „Езици, автомати, изчислимост“
(Стефан Вътев)
Blumer et. al. AlgorithmSuffixAutomaton.cpp

General Suffix Automaton Construction
Algorithmand Space Bounds
(Mehryar Mohri, Pedro Moreno, Eugene Weinstein)

THE SMALLEST AUTOMATON RECOGNIZING
THE SUBWORDS OF A TEXT*
(A.BLUMER, J.BLUMER and D.HAUSSLER)
2020-12-11 Ukkonen's Algorithm pt. 1
2020-12-18 Ukkonen's Algorithm pt. 2
Suffix Tree
2021-01-08 Lempel-Ziv, Suffix Arrays pt.1
2021-01-08 Lempel-Ziv, Suffix Arrays pt.2
Lempel-Ziv Algorithm
Information Theory
Suffix Arrays
2021-01-15 Dynamization of Static Data Structures pt.1
2021-01-22 Dynamization of Static Data Structures pt.2
Dynamization of Static Data Structures

Treap

TreapsFast Set Operations Using Treaps
ProblemsSolutions
SPOJ - ADAAPHID - Ada and Aphids
I/O Explanation
ADAAPHID.cpp
SPOJ - ADACROP - Ada and HarvestADACROP.cpp
Codeforces - E. Radio stations762E.cpp
SPOJ - COUNT1IT - Ghost TownCOUNT1IT.cpp
SPOJ - IITWPC4D - Arrangement ValidityIITWPC4D.cpp
SPOJ - All in OneALLIN1.cpp
Codeforces - D. Dog Show847D (Treap).cpp
847D (priority queue).cpp
Codeforces - Yet Another Array Queries Problem863D (Implicit).cpp
863D (reverse queries).cpp
SPOJ - MEANARR - Mean of arrayMEANARR.cpp
SPOJ - Twist and whirl - want to cheatTWIST (insert via split & merge).cpp
TWIST (insert via merge).cpp
SPOJ - KOILINE - Line upKOILINE.cpp
CodeChef - The PrestigePRESTIGE.cpp
Codeforces F. T-Shirts702F (breaking into intervals).cpp
702F (Algorithms using Treap).pdf
702F (Treap).cpp
Codeforces - Wizards and Roads167D.cpp
Codeforces - Yaroslav and Points295E.cpp
Codeforces - Letters Removing899F.cpp
Codeforces – Irrigation1181D.pdf
1181D.cpp
Hackerrank – Running medianRunningMedian (Split by count – implicit key).cpp
RunningMedian (kthSmallest).cpp
Running Median (Probabilistic Heaps).cpp
Running Median (Ordinary Heaps).cpp
USP2019-W8-AUSP2019-W8-A (Range sum and reverse).cpp

Lowest Common Ancestor

ProblemsSolutions
LCA – Lowest Common AncestorLCA – Lowest Common Ancestor–1 (euler tour and sparse table).cpp
DISQUERY– Distance QueryDISQUERY – Distance Query–1 (jump pointers).cpp
DISQUERY – Distance Query–2.cpp

About

Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - andy489/Fast_Algorithms_in_Data_Structures: Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations. · GitHub
Skip to content

Repository files navigation

Fast Algorithms in Data Structures

LectureTopicSolution
2020-10-02 LAQ (Level Ancestor Query) pt.1
2020-10-09 (Level Ancestor Query) pt.2
2020-10-02 LAQ (Level Ancestor Query) pt.3
LA-Problem (Cai Qi)
LA-Problem (Bender, Farach-Colton)
LA ProblemTable:O(n^2,1)
Long-Paths:O(n,sqrt(n))
Jump pointers:O(nlog(n),log(n))
Ladders:O(n,log(n))
Preorder traversal: Analysis
Binary search:O(n,log(n))
Ladders & Jump pointers:O(nlog(n),1))
Input(tree & file)
2020-10-16 LCA (Lowest Common Ancestor),
RMQ (Range Minimum Quert) pt.1

2020-10-23 LCA, RMQ pt.2
2020-10-30 Solving RMQ by finding LCA)
LCA-RMQ ProblemLCA Query
LCA, Sparse Table: O(nlog(n),1)
Distance Query
Solution 1.cpp O(n.log(n),log(n))
Solution 2.cpp O(n.log(n),log(n))
2020-11-06 Perfect HashPerfect Hash
2020-11-13 Willard Algorithmx-fast, y-fast trees
van Emde Boas Tree, idea and intuition
2020-11-20 van Emde Boas Trees
vEB Additional Analysis
van Emde Boas treesvanEmdeBoasTree.cpp O(n,log(log(n)))
vEB MIT (Overview)
2020-11-27 Suffix Automaton pt.1, 2 & 3
Project 2021-01-10
Test Case 01
Test Case 02

Записки по „Езици, автомати, изчислимост“
(Стефан Вътев)
Blumer et. al. AlgorithmSuffixAutomaton.cpp

General Suffix Automaton Construction
Algorithmand Space Bounds
(Mehryar Mohri, Pedro Moreno, Eugene Weinstein)

THE SMALLEST AUTOMATON RECOGNIZING
THE SUBWORDS OF A TEXT*
(A.BLUMER, J.BLUMER and D.HAUSSLER)
2020-12-11 Ukkonen's Algorithm pt. 1
2020-12-18 Ukkonen's Algorithm pt. 2
Suffix Tree
2021-01-08 Lempel-Ziv, Suffix Arrays pt.1
2021-01-08 Lempel-Ziv, Suffix Arrays pt.2
Lempel-Ziv Algorithm
Information Theory
Suffix Arrays
2021-01-15 Dynamization of Static Data Structures pt.1
2021-01-22 Dynamization of Static Data Structures pt.2
Dynamization of Static Data Structures

Treap

TreapsFast Set Operations Using Treaps
ProblemsSolutions
SPOJ - ADAAPHID - Ada and Aphids
I/O Explanation
ADAAPHID.cpp
SPOJ - ADACROP - Ada and HarvestADACROP.cpp
Codeforces - E. Radio stations762E.cpp
SPOJ - COUNT1IT - Ghost TownCOUNT1IT.cpp
SPOJ - IITWPC4D - Arrangement ValidityIITWPC4D.cpp
SPOJ - All in OneALLIN1.cpp
Codeforces - D. Dog Show847D (Treap).cpp
847D (priority queue).cpp
Codeforces - Yet Another Array Queries Problem863D (Implicit).cpp
863D (reverse queries).cpp
SPOJ - MEANARR - Mean of arrayMEANARR.cpp
SPOJ - Twist and whirl - want to cheatTWIST (insert via split & merge).cpp
TWIST (insert via merge).cpp
SPOJ - KOILINE - Line upKOILINE.cpp
CodeChef - The PrestigePRESTIGE.cpp
Codeforces F. T-Shirts702F (breaking into intervals).cpp
702F (Algorithms using Treap).pdf
702F (Treap).cpp
Codeforces - Wizards and Roads167D.cpp
Codeforces - Yaroslav and Points295E.cpp
Codeforces - Letters Removing899F.cpp
Codeforces – Irrigation1181D.pdf
1181D.cpp
Hackerrank – Running medianRunningMedian (Split by count – implicit key).cpp
RunningMedian (kthSmallest).cpp
Running Median (Probabilistic Heaps).cpp
Running Median (Ordinary Heaps).cpp
USP2019-W8-AUSP2019-W8-A (Range sum and reverse).cpp

Lowest Common Ancestor

ProblemsSolutions
LCA – Lowest Common AncestorLCA – Lowest Common Ancestor–1 (euler tour and sparse table).cpp
DISQUERY– Distance QueryDISQUERY – Distance Query–1 (jump pointers).cpp
DISQUERY – Distance Query–2.cpp

About

Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - andy489/Fast_Algorithms_in_Data_Structures: Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations. · GitHub
Skip to content

Repository files navigation

Fast Algorithms in Data Structures

LectureTopicSolution
2020-10-02 LAQ (Level Ancestor Query) pt.1
2020-10-09 (Level Ancestor Query) pt.2
2020-10-02 LAQ (Level Ancestor Query) pt.3
LA-Problem (Cai Qi)
LA-Problem (Bender, Farach-Colton)
LA ProblemTable:O(n^2,1)
Long-Paths:O(n,sqrt(n))
Jump pointers:O(nlog(n),log(n))
Ladders:O(n,log(n))
Preorder traversal: Analysis
Binary search:O(n,log(n))
Ladders & Jump pointers:O(nlog(n),1))
Input(tree & file)
2020-10-16 LCA (Lowest Common Ancestor),
RMQ (Range Minimum Quert) pt.1

2020-10-23 LCA, RMQ pt.2
2020-10-30 Solving RMQ by finding LCA)
LCA-RMQ ProblemLCA Query
LCA, Sparse Table: O(nlog(n),1)
Distance Query
Solution 1.cpp O(n.log(n),log(n))
Solution 2.cpp O(n.log(n),log(n))
2020-11-06 Perfect HashPerfect Hash
2020-11-13 Willard Algorithmx-fast, y-fast trees
van Emde Boas Tree, idea and intuition
2020-11-20 van Emde Boas Trees
vEB Additional Analysis
van Emde Boas treesvanEmdeBoasTree.cpp O(n,log(log(n)))
vEB MIT (Overview)
2020-11-27 Suffix Automaton pt.1, 2 & 3
Project 2021-01-10
Test Case 01
Test Case 02

Записки по „Езици, автомати, изчислимост“
(Стефан Вътев)
Blumer et. al. AlgorithmSuffixAutomaton.cpp

General Suffix Automaton Construction
Algorithmand Space Bounds
(Mehryar Mohri, Pedro Moreno, Eugene Weinstein)

THE SMALLEST AUTOMATON RECOGNIZING
THE SUBWORDS OF A TEXT*
(A.BLUMER, J.BLUMER and D.HAUSSLER)
2020-12-11 Ukkonen's Algorithm pt. 1
2020-12-18 Ukkonen's Algorithm pt. 2
Suffix Tree
2021-01-08 Lempel-Ziv, Suffix Arrays pt.1
2021-01-08 Lempel-Ziv, Suffix Arrays pt.2
Lempel-Ziv Algorithm
Information Theory
Suffix Arrays
2021-01-15 Dynamization of Static Data Structures pt.1
2021-01-22 Dynamization of Static Data Structures pt.2
Dynamization of Static Data Structures

Treap

TreapsFast Set Operations Using Treaps
ProblemsSolutions
SPOJ - ADAAPHID - Ada and Aphids
I/O Explanation
ADAAPHID.cpp
SPOJ - ADACROP - Ada and HarvestADACROP.cpp
Codeforces - E. Radio stations762E.cpp
SPOJ - COUNT1IT - Ghost TownCOUNT1IT.cpp
SPOJ - IITWPC4D - Arrangement ValidityIITWPC4D.cpp
SPOJ - All in OneALLIN1.cpp
Codeforces - D. Dog Show847D (Treap).cpp
847D (priority queue).cpp
Codeforces - Yet Another Array Queries Problem863D (Implicit).cpp
863D (reverse queries).cpp
SPOJ - MEANARR - Mean of arrayMEANARR.cpp
SPOJ - Twist and whirl - want to cheatTWIST (insert via split & merge).cpp
TWIST (insert via merge).cpp
SPOJ - KOILINE - Line upKOILINE.cpp
CodeChef - The PrestigePRESTIGE.cpp
Codeforces F. T-Shirts702F (breaking into intervals).cpp
702F (Algorithms using Treap).pdf
702F (Treap).cpp
Codeforces - Wizards and Roads167D.cpp
Codeforces - Yaroslav and Points295E.cpp
Codeforces - Letters Removing899F.cpp
Codeforces – Irrigation1181D.pdf
1181D.cpp
Hackerrank – Running medianRunningMedian (Split by count – implicit key).cpp
RunningMedian (kthSmallest).cpp
Running Median (Probabilistic Heaps).cpp
Running Median (Ordinary Heaps).cpp
USP2019-W8-AUSP2019-W8-A (Range sum and reverse).cpp

Lowest Common Ancestor

ProblemsSolutions
LCA – Lowest Common AncestorLCA – Lowest Common Ancestor–1 (euler tour and sparse table).cpp
DISQUERY– Distance QueryDISQUERY – Distance Query–1 (jump pointers).cpp
DISQUERY – Distance Query–2.cpp

About

Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - andy489/Fast_Algorithms_in_Data_Structures: Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations. · GitHub
Skip to content

Repository files navigation

Fast Algorithms in Data Structures

LectureTopicSolution
2020-10-02 LAQ (Level Ancestor Query) pt.1
2020-10-09 (Level Ancestor Query) pt.2
2020-10-02 LAQ (Level Ancestor Query) pt.3
LA-Problem (Cai Qi)
LA-Problem (Bender, Farach-Colton)
LA ProblemTable:O(n^2,1)
Long-Paths:O(n,sqrt(n))
Jump pointers:O(nlog(n),log(n))
Ladders:O(n,log(n))
Preorder traversal: Analysis
Binary search:O(n,log(n))
Ladders & Jump pointers:O(nlog(n),1))
Input(tree & file)
2020-10-16 LCA (Lowest Common Ancestor),
RMQ (Range Minimum Quert) pt.1

2020-10-23 LCA, RMQ pt.2
2020-10-30 Solving RMQ by finding LCA)
LCA-RMQ ProblemLCA Query
LCA, Sparse Table: O(nlog(n),1)
Distance Query
Solution 1.cpp O(n.log(n),log(n))
Solution 2.cpp O(n.log(n),log(n))
2020-11-06 Perfect HashPerfect Hash
2020-11-13 Willard Algorithmx-fast, y-fast trees
van Emde Boas Tree, idea and intuition
2020-11-20 van Emde Boas Trees
vEB Additional Analysis
van Emde Boas treesvanEmdeBoasTree.cpp O(n,log(log(n)))
vEB MIT (Overview)
2020-11-27 Suffix Automaton pt.1, 2 & 3
Project 2021-01-10
Test Case 01
Test Case 02

Записки по „Езици, автомати, изчислимост“
(Стефан Вътев)
Blumer et. al. AlgorithmSuffixAutomaton.cpp

General Suffix Automaton Construction
Algorithmand Space Bounds
(Mehryar Mohri, Pedro Moreno, Eugene Weinstein)

THE SMALLEST AUTOMATON RECOGNIZING
THE SUBWORDS OF A TEXT*
(A.BLUMER, J.BLUMER and D.HAUSSLER)
2020-12-11 Ukkonen's Algorithm pt. 1
2020-12-18 Ukkonen's Algorithm pt. 2
Suffix Tree
2021-01-08 Lempel-Ziv, Suffix Arrays pt.1
2021-01-08 Lempel-Ziv, Suffix Arrays pt.2
Lempel-Ziv Algorithm
Information Theory
Suffix Arrays
2021-01-15 Dynamization of Static Data Structures pt.1
2021-01-22 Dynamization of Static Data Structures pt.2
Dynamization of Static Data Structures

Treap

TreapsFast Set Operations Using Treaps
ProblemsSolutions
SPOJ - ADAAPHID - Ada and Aphids
I/O Explanation
ADAAPHID.cpp
SPOJ - ADACROP - Ada and HarvestADACROP.cpp
Codeforces - E. Radio stations762E.cpp
SPOJ - COUNT1IT - Ghost TownCOUNT1IT.cpp
SPOJ - IITWPC4D - Arrangement ValidityIITWPC4D.cpp
SPOJ - All in OneALLIN1.cpp
Codeforces - D. Dog Show847D (Treap).cpp
847D (priority queue).cpp
Codeforces - Yet Another Array Queries Problem863D (Implicit).cpp
863D (reverse queries).cpp
SPOJ - MEANARR - Mean of arrayMEANARR.cpp
SPOJ - Twist and whirl - want to cheatTWIST (insert via split & merge).cpp
TWIST (insert via merge).cpp
SPOJ - KOILINE - Line upKOILINE.cpp
CodeChef - The PrestigePRESTIGE.cpp
Codeforces F. T-Shirts702F (breaking into intervals).cpp
702F (Algorithms using Treap).pdf
702F (Treap).cpp
Codeforces - Wizards and Roads167D.cpp
Codeforces - Yaroslav and Points295E.cpp
Codeforces - Letters Removing899F.cpp
Codeforces – Irrigation1181D.pdf
1181D.cpp
Hackerrank – Running medianRunningMedian (Split by count – implicit key).cpp
RunningMedian (kthSmallest).cpp
Running Median (Probabilistic Heaps).cpp
Running Median (Ordinary Heaps).cpp
USP2019-W8-AUSP2019-W8-A (Range sum and reverse).cpp

Lowest Common Ancestor

ProblemsSolutions
LCA – Lowest Common AncestorLCA – Lowest Common Ancestor–1 (euler tour and sparse table).cpp
DISQUERY– Distance QueryDISQUERY – Distance Query–1 (jump pointers).cpp
DISQUERY – Distance Query–2.cpp

About

Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - andy489/Fast_Algorithms_in_Data_Structures: Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations. · GitHub
Skip to content

Repository files navigation

Fast Algorithms in Data Structures

LectureTopicSolution
2020-10-02 LAQ (Level Ancestor Query) pt.1
2020-10-09 (Level Ancestor Query) pt.2
2020-10-02 LAQ (Level Ancestor Query) pt.3
LA-Problem (Cai Qi)
LA-Problem (Bender, Farach-Colton)
LA ProblemTable:O(n^2,1)
Long-Paths:O(n,sqrt(n))
Jump pointers:O(nlog(n),log(n))
Ladders:O(n,log(n))
Preorder traversal: Analysis
Binary search:O(n,log(n))
Ladders & Jump pointers:O(nlog(n),1))
Input(tree & file)
2020-10-16 LCA (Lowest Common Ancestor),
RMQ (Range Minimum Quert) pt.1

2020-10-23 LCA, RMQ pt.2
2020-10-30 Solving RMQ by finding LCA)
LCA-RMQ ProblemLCA Query
LCA, Sparse Table: O(nlog(n),1)
Distance Query
Solution 1.cpp O(n.log(n),log(n))
Solution 2.cpp O(n.log(n),log(n))
2020-11-06 Perfect HashPerfect Hash
2020-11-13 Willard Algorithmx-fast, y-fast trees
van Emde Boas Tree, idea and intuition
2020-11-20 van Emde Boas Trees
vEB Additional Analysis
van Emde Boas treesvanEmdeBoasTree.cpp O(n,log(log(n)))
vEB MIT (Overview)
2020-11-27 Suffix Automaton pt.1, 2 & 3
Project 2021-01-10
Test Case 01
Test Case 02

Записки по „Езици, автомати, изчислимост“
(Стефан Вътев)
Blumer et. al. AlgorithmSuffixAutomaton.cpp

General Suffix Automaton Construction
Algorithmand Space Bounds
(Mehryar Mohri, Pedro Moreno, Eugene Weinstein)

THE SMALLEST AUTOMATON RECOGNIZING
THE SUBWORDS OF A TEXT*
(A.BLUMER, J.BLUMER and D.HAUSSLER)
2020-12-11 Ukkonen's Algorithm pt. 1
2020-12-18 Ukkonen's Algorithm pt. 2
Suffix Tree
2021-01-08 Lempel-Ziv, Suffix Arrays pt.1
2021-01-08 Lempel-Ziv, Suffix Arrays pt.2
Lempel-Ziv Algorithm
Information Theory
Suffix Arrays
2021-01-15 Dynamization of Static Data Structures pt.1
2021-01-22 Dynamization of Static Data Structures pt.2
Dynamization of Static Data Structures

Treap

TreapsFast Set Operations Using Treaps
ProblemsSolutions
SPOJ - ADAAPHID - Ada and Aphids
I/O Explanation
ADAAPHID.cpp
SPOJ - ADACROP - Ada and HarvestADACROP.cpp
Codeforces - E. Radio stations762E.cpp
SPOJ - COUNT1IT - Ghost TownCOUNT1IT.cpp
SPOJ - IITWPC4D - Arrangement ValidityIITWPC4D.cpp
SPOJ - All in OneALLIN1.cpp
Codeforces - D. Dog Show847D (Treap).cpp
847D (priority queue).cpp
Codeforces - Yet Another Array Queries Problem863D (Implicit).cpp
863D (reverse queries).cpp
SPOJ - MEANARR - Mean of arrayMEANARR.cpp
SPOJ - Twist and whirl - want to cheatTWIST (insert via split & merge).cpp
TWIST (insert via merge).cpp
SPOJ - KOILINE - Line upKOILINE.cpp
CodeChef - The PrestigePRESTIGE.cpp
Codeforces F. T-Shirts702F (breaking into intervals).cpp
702F (Algorithms using Treap).pdf
702F (Treap).cpp
Codeforces - Wizards and Roads167D.cpp
Codeforces - Yaroslav and Points295E.cpp
Codeforces - Letters Removing899F.cpp
Codeforces – Irrigation1181D.pdf
1181D.cpp
Hackerrank – Running medianRunningMedian (Split by count – implicit key).cpp
RunningMedian (kthSmallest).cpp
Running Median (Probabilistic Heaps).cpp
Running Median (Ordinary Heaps).cpp
USP2019-W8-AUSP2019-W8-A (Range sum and reverse).cpp

Lowest Common Ancestor

ProblemsSolutions
LCA – Lowest Common AncestorLCA – Lowest Common Ancestor–1 (euler tour and sparse table).cpp
DISQUERY– Distance QueryDISQUERY – Distance Query–1 (jump pointers).cpp
DISQUERY – Distance Query–2.cpp

About

Advanced algorithms and data structures for competitive programming and computational research: LA/LCA, RMQ, perfect hashing, vEB/x-fast trees, treaps, and suffix automata/tree implementations.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages