From f03c118930e795bbe68fa0b7bffe97f416804dc4 Mon Sep 17 00:00:00 2001 From: Benjamin Qi Date: Thu, 2 Jul 2020 13:48:28 -0400 Subject: [PATCH] misc plat --- content/2_General/Debugging.mdx | 2 ++ content/6_Plat/Centroid.mdx | 1 + content/6_Plat/HLD.mdx | 15 ++++++++------- content/6_Plat/Hull.mdx | 2 ++ content/6_Plat/LC.mdx | 4 +++- content/6_Plat/Merging.mdx | 4 +++- content/6_Plat/Suffix_Array.mdx | 12 ++++++++---- 7 files changed, 27 insertions(+), 13 deletions(-) diff --git a/content/2_General/Debugging.mdx b/content/2_General/Debugging.mdx index 467047e..8ae1dc6 100644 --- a/content/2_General/Debugging.mdx +++ b/content/2_General/Debugging.mdx @@ -88,3 +88,5 @@ Although not feasible if you have to write all code from scratch, I find [this t ### Stress Testing You can use a [simple script](https://github.com/bqi343/USACO/blob/master/Implementations/content/contest/stress.sh) to test two solutions against each other. See Errichto's [video](https://www.youtube.com/watch?v=JXTVOyQpSGM) on testing solutions for more information. + + - [Errichto's Blog](https://codeforces.com/blog/entry/64993) diff --git a/content/6_Plat/Centroid.mdx b/content/6_Plat/Centroid.mdx index d5981b2..0124835 100644 --- a/content/6_Plat/Centroid.mdx +++ b/content/6_Plat/Centroid.mdx @@ -17,6 +17,7 @@ export const metadata = { new Problem("YS", "Frequency Table of Tree Distance", "frequency_table_of_tree_distance", "Hard", false, ["Centroid", "FFT"], ""), new Problem("DMOJ", "Bob Equilibrium", "dmopc19c7p6", "Hard", false, ["Centroid"], "tight time limit"), new Problem("DMOJ", "Time Traveller Imaxblue", "tc19summerh", "Hard", false, ["Centroid"], ""), + new Problem("ojuz", "JOI - Synchronization", "JOI13_synchronization", "Hard", false, ["Centroid", "Small to Large"], "Looks like $O(N \log^3 N)$ is very fast!"), new Problem("Plat", "At Large", "793", "Very Hard", false, ["Centroid"], "tight time limit"), ] } diff --git a/content/6_Plat/HLD.mdx b/content/6_Plat/HLD.mdx index 43f96ad..c735261 100644 --- a/content/6_Plat/HLD.mdx +++ b/content/6_Plat/HLD.mdx @@ -17,13 +17,14 @@ export const metadata = { new Problem("CSES", "Company Queries II", "1688", "Intro|Easy", false, ["LCA"], "Pure implementation; see Benq's library code, it has a function for LCA. Though this problem can be solved with binary lifting as well, you should do it with HLD to get practice."), ], general: [ - new Problem("Gold", "Milk Visits", "970", "Easy", false, ["HLD"], ""), + new Problem("Gold", "Milk Visits", "970", "Easy", false, ["HLD"], "This has a linear time solution, but it's easier to make modifications to the HLD template."), new Problem("Gold", "Cow Land", "921", "Easy", false, ["PURS", "HLD"], ""), - new Problem("HR", "Subtrees & Paths", "https://www.hackerrank.com/challenges/subtrees-and-paths", "Intro|Easy", false, ["HLD"], ""), - new Problem("Old Gold", "Grass Planting", "102", "Intro|Easy", false, ["HLD"], ""), + new Problem("Old Gold", "Grass Planting", "102", "Intro|Easy", false, ["HLD", "PURS"], ""), new Problem("Plat", "Disrupt", "842", "Easy", false, ["HLD"], ""), - new Problem("YS","Vertex Set Path Composite","vertex_set_path_composite", "Intro|Hard", false, ["HLD"], "Function order matters! Maintain two segment trees, one for going up and the other for going down the tree."), - new Problem("CF", "Tree Queries", "contest/1254/problem/D", "Hard", false, ["HLD"], ""), + new Problem("HR", "Subtrees & Paths", "https://www.hackerrank.com/challenges/subtrees-and-paths", "Intro|Easy", false, ["HLD", "RURQ"], "See adamant's blog."), + new Problem("YS","Vertex Set Path Composite","vertex_set_path_composite", "Intro|Normal", false, ["HLD", "SegTree"], "Function order matters! Maintain two segment trees, one for going up and the other for going down the tree."), + new Problem("CF", "Tree Queries", "contest/1254/problem/D", "Hard", false, ["HLD"], "maybe hard to see why this applies here, gives $O(N\log N)$ while most people solved it with some factor of $\sqrt N$"), + new Problem("ojuz", "JOI - Synchronization", "JOI13_synchronization", "Hard", false, ["HLD"], "$O(N\log N)$ :D"), new Problem("ojuz", "JOI - Cats or Dogs", "JOI18_catdog", "Very Hard", false, ["HLD"], ""), ], } @@ -42,8 +43,8 @@ export const metadata = { - Not a complete HLD implementation - Complete HLD implementation following the first two articles (with minor modifications) + not complete + complete implementation following the above two articles with minor modifications ## Problems diff --git a/content/6_Plat/Hull.mdx b/content/6_Plat/Hull.mdx index 18c57d7..2ec6b5c 100644 --- a/content/6_Plat/Hull.mdx +++ b/content/6_Plat/Hull.mdx @@ -69,3 +69,5 @@ export const metadata = { + +https://codeforces.com/contest/1083/problem/E \ No newline at end of file diff --git a/content/6_Plat/LC.mdx b/content/6_Plat/LC.mdx index 8b7edd5..c387e8c 100644 --- a/content/6_Plat/LC.mdx +++ b/content/6_Plat/LC.mdx @@ -48,4 +48,6 @@ export const metadata = { ## Problems - \ No newline at end of file + + +https://atcoder.jp/contests/arc066/tasks/arc066_d \ No newline at end of file diff --git a/content/6_Plat/Merging.mdx b/content/6_Plat/Merging.mdx index 706c471..18d2d16 100644 --- a/content/6_Plat/Merging.mdx +++ b/content/6_Plat/Merging.mdx @@ -34,7 +34,9 @@ export const metadata = { -## Merging Sets +## Merging Data Structures + +Obviously [linked lists](http://www.cplusplus.com/reference/list/list/splice/) can be merged in $O(1)$ time. But what about sets or vectors? diff --git a/content/6_Plat/Suffix_Array.mdx b/content/6_Plat/Suffix_Array.mdx index 32395bb..fe85af7 100644 --- a/content/6_Plat/Suffix_Array.mdx +++ b/content/6_Plat/Suffix_Array.mdx @@ -31,6 +31,8 @@ export const metadata = { } }; +## Resources + Videos & Practice Problems @@ -41,9 +43,13 @@ export const metadata = { -(recommend that you also test against brute force for many small strings) +### Implementations -(impl) + + $O(N\log N)$ + + +(recommend that you also test against brute force for many small strings) ## LCP Array @@ -51,8 +57,6 @@ export const metadata = { Quickly compute longest common prefix of two suffixes. -(impl) - ## Inverse Burrows-Wheeler