diff --git a/content/6_Plat/Aliens.mdx b/content/6_Plat/Aliens.mdx
new file mode 100644
index 0000000..910a010
--- /dev/null
+++ b/content/6_Plat/Aliens.mdx
@@ -0,0 +1,10 @@
+---
+id: aliens
+title: "Aliens Trick"
+author: Benjamin Qi
+description: "?"
+prerequisites:
+ - Plat - Convex Hull
+---
+
+IOI 2016 Aliens
\ No newline at end of file
diff --git a/content/6_Plat/DP_Bitmasks.mdx b/content/6_Plat/DP_Bitmasks.mdx
index c3d47ca..fea0010 100644
--- a/content/6_Plat/DP_Bitmasks.mdx
+++ b/content/6_Plat/DP_Bitmasks.mdx
@@ -14,7 +14,8 @@ export const metadata = {
problems: {
general: [
new Problem("CSES", "Hamiltonian Flights", "1690", "Easy", false, ["Bitmasks"], ""),
- new Problem("CSES", "Elevator Rides", "1653", "Normal", false, ["LCA"], ""),
+ new Problem("CSES", "Elevator Rides", "1653", "Normal", false, ["Bitmasks"], ""),
+ new Problem("YS", "Max Indep Set", "maximum_independent_set", "Hard", false, ["Bitmasks", "Meet in Middle"], ""),
],
}
};
diff --git a/content/6_Plat/Euler.mdx b/content/6_Plat/Euler.mdx
new file mode 100644
index 0000000..5c2ae4b
--- /dev/null
+++ b/content/6_Plat/Euler.mdx
@@ -0,0 +1,36 @@
+---
+id: eulers-formula
+title: "Euler's Formula"
+author: Benjamin Qi
+description: "?"
+prerequisites:
+ - "?"
+---
+
+import { Problem } from "../models";
+
+export const metadata = {
+ problems: {
+ e1: [
+ new Problem("DMOJ", "Rainbow Gold", "apio17p1", "Hard", false, [],""),
+ ],
+ e2: [
+ new Problem("Plat", "Valleys", "950", "Hard", false, [], ""),
+ ],
+ other: [
+ new Problem("Kattis", "Island Archipelago", "https://utipc20s.kattis.com/problems/utipc20s.islandarchipelago", "Very Hard", false, [],""),
+ ],
+ }
+};
+
+## Example 1
+
+
+
+Land of Rainbow Gold
+
+## Example 2
+
+
+
+
\ No newline at end of file
diff --git a/content/6_Plat/Flows.mdx b/content/6_Plat/Flows.mdx
index 2e22acd..f2e4e90 100644
--- a/content/6_Plat/Flows.mdx
+++ b/content/6_Plat/Flows.mdx
@@ -1,5 +1,5 @@
---
-id: flows
+id: max-flow
title: "Maximum Flow"
author: Benjamin Qi
prerequisites:
@@ -47,3 +47,10 @@ Has not been the solution to any platinum problem, but appeared in old gold.
- [Incorrect Flow](https://codeforces.com/contest/708/problem/D)
- [Multi-Path Story](https://atcoder.jp/contests/jag2013summer-day4/tasks/icpc2013summer_day4_i)
- [WAC 4 - Hungry Squirrels](https://dmoj.ca/problem/wac4p6)
+
+
+ * Faster Max Flow
+ * Hopcroft-Karp Bipartite Matching
+ * Dinic's Algorithm
+ * Push-Relabel
+ * [Fast Flow Implementation - Chilli](https://codeforces.com/blog/entry/66006)
\ No newline at end of file
diff --git a/content/6_Plat/Hull.mdx b/content/6_Plat/Hull.mdx
index 54b1e06..15f9803 100644
--- a/content/6_Plat/Hull.mdx
+++ b/content/6_Plat/Hull.mdx
@@ -33,3 +33,9 @@ prerequisites:
- Generalization of "Balance Beam"
Minkowski addition?
+
+## With DP
+
+cbarn
+
+mowing
\ No newline at end of file
diff --git a/content/6_Plat/String_Search.mdx b/content/6_Plat/String_Search.mdx
index 7877d2c..d229b77 100644
--- a/content/6_Plat/String_Search.mdx
+++ b/content/6_Plat/String_Search.mdx
@@ -35,3 +35,5 @@ description: Knuth-Morris-Pratt and Z Algorithms (and a few more related topics)
- Tutorial
- [adamant](http://codeforces.com/blog/entry/14854)
- [GeeksForGeeks](http://www.geeksforgeeks.org/aho-corasick-algorithm-pattern-searching/)
+
+## Palindromic Tree (Intro)
\ No newline at end of file
diff --git a/content/7_Advanced/BBST.mdx b/content/7_Advanced/BBST.mdx
new file mode 100644
index 0000000..a2beca7
--- /dev/null
+++ b/content/7_Advanced/BBST.mdx
@@ -0,0 +1,13 @@
+(likely restricted to camp)
+
+ * Treap
+ * Notes
+ * [Quora](https://threads-iiith.quora.com/Treaps-One-Tree-to-Rule-em-all-Part-1)
+ * [PPT](https://docs.google.com/presentation/d/14xgtdDWnIBwmJRAuIdZ8FvLZcX9uRxnNoGOGAQRDIvc/edit?usp=sharing)
+ * Samuel Hsiang Guide (see resources)
+ * [Euler Tour Tree](https://codeforces.com/blog/entry/18369)
+ * Problems
+ * [Strings](https://csacademy.com/contest/archive/task/strings/) [](181)
+ * [Points & Distances](https://www.hackerearth.com/problem/algorithm/septembereasy-points-and-distances-d30d0e6b/description/) [](185)
+ * [Tree Rotations 2](https://szkopul.edu.pl/problemset/problem/b0BM0al2crQBt6zovEtJfOc6/site/?key=statement) [](193)
+ * [A2OJ](https://a2oj.com/category?ID=14)
diff --git a/content/6_Plat/FFT.mdx b/content/7_Advanced/FFT.mdx
similarity index 100%
rename from content/6_Plat/FFT.mdx
rename to content/7_Advanced/FFT.mdx
diff --git a/content/7_Advanced/Game_Theory.mdx b/content/7_Advanced/Game_Theory.mdx
new file mode 100644
index 0000000..c5c3e35
--- /dev/null
+++ b/content/7_Advanced/Game_Theory.mdx
@@ -0,0 +1,18 @@
+
+ * Game Theory
+ * Tutorial
+ * [HackerRank](https://www.hackerrank.com/topics/game-theory-and-grundy-numbers)
+ * [TopCoder](https://www.topcoder.com/community/data-science/data-science-tutorials/algorithm-games/)
+ * Books (thanks mnbvmar!)
+ * "On Numbers and Games" - Conway
+ * "Winning Ways for Your Mathematical Plays" (Berlekamp, Conway, Guy)
+ * Topics
+ * Nim
+ * Grundy Numbers
+ * Sprague-Grundy Theorem
+ * Problem(s)
+ * [Division Game](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=2959)
+ * [Game of Stones](http://codeforces.com/problemset/problem/768/E) [](59)
+ * [Factorization Game](https://www.hackerearth.com/problem/algorithm/mancunian-and-factorization-game-b8794702/) [](61)
+ * [Arpa & Game](http://codeforces.com/contest/850/problem/C) [](66)
+ * [Apple Tree](http://codeforces.com/contest/812/problem/E) [](67)
\ No newline at end of file
diff --git a/content/7_Advanced/LCT.mdx b/content/7_Advanced/LCT.mdx
new file mode 100644
index 0000000..d61f8ef
--- /dev/null
+++ b/content/7_Advanced/LCT.mdx
@@ -0,0 +1,44 @@
+(restricted to camp)
+
+ * Splay Tree
+ * Notes
+ * [Splay Tree Paper](https://www.cs.cmu.edu/~sleator/papers/self-adjusting.pdf)
+ * [Splay Tree Presentation](https://web.stanford.edu/class/archive/cs/cs166/cs166.1146/lectures/08/Slides08.pdf)
+ * Link Cut Tree
+ * Notes
+ * [Link-Cut Tree](http://courses.csail.mit.edu/6.851/spring12/scribe/L19.pdf)
+ * [CTSC 2014 Translation](https://www.overleaf.com/read/zbbwngftkrkx?fbclid=IwAR1VJmGscfSZJHejVqU5_2Nlm8-R09pFlU7PpEg_i3CXEd0Qw-dzliSn5RI)
+ * [Subtree Queries Tutorial](https://codeforces.com/blog/entry/67637)
+ * Problems
+ * SPOJ
+ * [DYNACON1](https://www.spoj.com/problems/DYNACON1/)
+ * technically, LCT isn't needed because the queries are offline
+ * [DYNALCA](https://www.spoj.com/problems/DYNALCA/)
+ * CF
+ * [Silence's Sounds](https://codeforces.com/contest/1109/problem/F)
+ * test connectivity
+ * [Train Tracking](https://codeforces.com/contest/1344/problem/E)
+ * switching can be done with LCT access
+ * set min on path with lazy prop
+ * [Solution](https://codeforces.com/contest/1344/submission/79212522)
+ * [Tree or not Tree](https://codeforces.com/contest/117/problem/E)
+ * tree + one edge
+ * [Old Driver Tree](https://codeforces.com/contest/1172/problem/E)
+ * [Pastoral Oddities](https://codeforces.com/contest/603/problem/E)
+ * path + subtree queries
+ * USACO Camp (not public)
+ * [The Applicant](https://probgate.org/viewproblem.php?pid=578)
+ * tree + one edge
+ * [Cows Play on a Tree](https://probgate.org/viewproblem.php?pid=259)
+ * reverse tree paths
+ * HLD + Treap
+ * or two LCTs, one for real tree labels and one for query labels
+ * Other
+ * [Balanced Tokens (Eric Zhang)](https://www.hackerrank.com/contests/pwshpc-online-round/challenges/pwsh-tokens/problem)
+ * [Dynamic Tree Test (Easy)](https://dmoj.ca/problem/ds5easy)
+ * [Dynamic Tree Test](https://dmoj.ca/problem/ds5)
+ * Requires operations on subtrees in addition to those from the easy version
+ * [CEOI Treasure Hunt](https://cses.fi/174/list/)
+ * get k-th parent
+ * [CERC 17 D](https://codeforces.com/gym/101620)
+ * LCT not needed, but can directly apply solution from "The Applicant"
diff --git a/content/7_Advanced/Matroid_Isect.mdx b/content/7_Advanced/Matroid_Isect.mdx
new file mode 100644
index 0000000..510b2c4
--- /dev/null
+++ b/content/7_Advanced/Matroid_Isect.mdx
@@ -0,0 +1,31 @@
+
+ * Matroid Intersection
+ * Tutorial
+ * [CF Tutorial](https://codeforces.com/blog/entry/69287)
+ * [Parametrized Algorithms Ch 12](http://parameterized-algorithms.mimuw.edu.pl/parameterized-algorithms.pdf)
+ * [Illinois Lecture Notes](https://courses.engr.illinois.edu/cs598csc/sp2010/Lectures/Lecture17.pdf)
+ * [Goemans](https://math.mit.edu/~goemans/18438F09/lec13.pdf)
+ * describes partition matroid
+ * Problems
+ * [Honesty](https://www.urionlinejudge.com.br/judge/en/problems/view/2128)
+ * Max Size Graphic + Colorful
+ * [Coins](https://www.spoj.com/problems/COIN/)
+ * Max Size Graphic + Colorful
+ * [SERVERS](https://www.codechef.com/problems/SERVERS)
+ * Max Size Graphic + Colorful
+ * [Seollal](https://codeforces.com/contest/1284/problem/G)
+ * Max Size Graphic + Colorful
+ * [Pick Your Own Nim](https://codeforces.com/gym/102156/problem/D)
+ * Max Size Linear + Colorful
+ * [CCNCT2](https://www.codechef.com/problems/CNNCT2)
+ * Max Size Graphic + Graphic
+ * [Ambiguous Forest](https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3080)
+ * Max Size Graphic + Graphic
+ * [Rainbow Graph](https://open.kattis.com/problems/rainbowgraph)
+ * Min Weight Graphic + Colorful
+ * [NAIPC 2018 Sols](http://serjudging.vanb.org/?p=1165)
+ * [Arup Guha Sol](http://www.cs.ucf.edu/~dmarino/progcontests/mysols/northamerica/2018/g.java)
+ * [HAMEL](https://www.codechef.com/problems/HAMEL)
+ * Partition into 2 MST's, then construct
+ * [TST](https://dmoj.ca/problem/dmopc19c3p6)
+ * Partition into 3 MST's
diff --git a/content/7_Advanced/MinCostFlow.mdx b/content/7_Advanced/MinCostFlow.mdx
new file mode 100644
index 0000000..66405a7
--- /dev/null
+++ b/content/7_Advanced/MinCostFlow.mdx
@@ -0,0 +1,9 @@
+
+ * Minimum Cost Flow
+ * Tutorial
+ * [TopCoder](https://www.topcoder.com/community/data-science/data-science-tutorials/minimum-cost-flow-part-two-algorithms/)
+ * [Johnson's Algorithm](https://en.wikipedia.org/wiki/Johnson%27s_algorithm)
+ * Problems
+ * [April Fool's Problem](http://codeforces.com/contest/802/problem/N)
+ * [Cow & Exercise](https://codeforces.com/contest/1307/problem/G)
+ * consider LP dual
diff --git a/content/7_Advanced/Multiplicative.mdx b/content/7_Advanced/Multiplicative.mdx
new file mode 100644
index 0000000..2f700af
--- /dev/null
+++ b/content/7_Advanced/Multiplicative.mdx
@@ -0,0 +1,60 @@
+---
+id: multiplicative
+title: "Summing Multiplicative Functions"
+author: Benjamin Qi
+description: ?
+---
+
+(doesn't appear on USACO)
+
+https://codeforces.com/blog/entry/54150
+
+## Counting Primes
+
+https://judge.yosupo.jp/problem/counting_primes
+
+## Totient Function
+
+https://judge.yosupo.jp/problem/sum_of_totient_function
+
+```cpp
+template struct Sieve {
+ vi pr;
+ int sp[SZ], phi[SZ]; // smallest prime that divides
+ Sieve() { // above is faster
+ memset(sp,0,sizeof sp);
+ phi[1] = 1;
+ FOR(i,2,SZ) {
+ if (sp[i] == 0) {
+ sp[i] = i, pr.pb(i); phi[i] = i-1;
+ } trav(p,pr) {
+ if (p > sp[i] || i*p >= SZ) break;
+ sp[i*p] = p;
+ phi[i*p] = (p == sp[i] ? p : p-1)*phi[i];
+ }
+ }
+ }
+};
+
+const int HI = 5000000;
+Sieve S;
+ll N;
+vmi small(HI), big;
+
+int main() {
+ setIO(); re(N); big.rsz(N/HI+2);
+ FOR(i,1,HI) small[i] = small[i-1]+S.phi[i];
+ ROF(i,1,sz(big)) {
+ ll mx = N/i; big[i] = mi(mx)*(mx+1)/2; // dbg("HUH",i,big[i]);
+ for (ll fac = 2, nex; fac <= mx; fac = nex) {
+ ll quo = mx/fac; nex = mx/quo+1;
+ big[i] -= (nex-fac)*(quo < HI ? small[quo] : big[i*fac]);
+ }
+ }
+ ps(big[1]);
+}
+```
+
+(project euler)
+
+(topcoder problem)
\ No newline at end of file
diff --git a/content/7_Advanced/Persistent.mdx b/content/7_Advanced/Persistent.mdx
new file mode 100644
index 0000000..5903432
--- /dev/null
+++ b/content/7_Advanced/Persistent.mdx
@@ -0,0 +1,12 @@
+(likely restricted to camp)
+
+ * Persistent Segment Tree
+ * Tutorial
+ * [Anudeep2011](https://blog.anudeep2011.com/persistent-segment-trees-explained-with-spoj-problems/)
+ * [oml1111](https://drive.google.com/file/d/0BwGLW04WRv0ITEZjRWlMSFc2bk0/view)
+ * [Lazy Propogation](http://codeforces.com/blog/entry/47108?#comment-315047)
+ * Problems
+ * [A2OJ](https://a2oj.com/category?ID=651)
+
+
+(WAC problem)
\ No newline at end of file
diff --git a/content/7_Advanced/String_Suffix.mdx b/content/7_Advanced/String_Suffix.mdx
new file mode 100644
index 0000000..4738878
--- /dev/null
+++ b/content/7_Advanced/String_Suffix.mdx
@@ -0,0 +1,12 @@
+(restricted to camp)
+
+ * String Suffix Structures
+ * [Suffix Automata](http://codeforces.com/blog/entry/20861)
+ * Suffix Tree
+ * [CF](http://codeforces.com/blog/entry/16780)
+ * [CP-Algo](https://cp-algorithms.com/string/suffix-tree-ukkonen.html)
+ * O(nlogn) suffix array usually suffices
+ * [Palindromic Tree](http://codeforces.com/blog/entry/13959)
+ * [Palindrome Partition](https://codeforces.com/contest/932/problem/G)
+ * [Partial Solution](https://codeforces.com/blog/entry/19193)
+ * [Palindromic Magic (HARD)](https://codeforces.com/contest/1081/problem/H)
diff --git a/content/ordering.ts b/content/ordering.ts
index 173a9d2..eb48c3a 100644
--- a/content/ordering.ts
+++ b/content/ordering.ts
@@ -122,7 +122,6 @@ const ModuleOrdering = {
items: [
"dp-bitmasks",
"dp-ranges",
- "slope",
]
},
{
@@ -131,7 +130,8 @@ const ModuleOrdering = {
"sp-neg",
"more-dfs",
"eulerian-tours",
- "flows",
+ "euler",
+ "max-flow",
]
},
{
@@ -148,11 +148,12 @@ const ModuleOrdering = {
"geo-pri",
"hull",
"LC",
+ "aliens",
+ "slope",
]
},
"bitsets",
"fracture",
- "fft",
]
};