summaryrefslogtreecommitdiff
path: root/other/other.tex
diff options
context:
space:
mode:
Diffstat (limited to 'other/other.tex')
-rw-r--r--other/other.tex74
1 files changed, 57 insertions, 17 deletions
diff --git a/other/other.tex b/other/other.tex
index b275c6e..d9ac362 100644
--- a/other/other.tex
+++ b/other/other.tex
@@ -6,31 +6,26 @@
\subsection{Bit Operations}
\lstinputlisting{other/bitOps.cpp}
-\subsection{Fast IO}
-\lstinputlisting{other/fastIO.cpp}
+% \subsection{Fast IO}
+% \lstinputlisting{other/fastIO.cpp}
+
+\subsection{Rekursiver Abstieg und Abstrakter Syntaxbaum}
+\lstinputlisting{other/parser.cpp}
\subsection{Sonstiges}
\begin{lstlisting}
// Alles-Header.
#include <bits/stdc++.h>
-
-// Setzt das deutsche Tastaturlayout.
-setxkbmap de
-
// Schnelle Ein-/Ausgabe mit cin/cout.
ios::sync_with_stdio(false);
-
-// Set mit eigener Sortierfunktion. Typ muss nicht explizit angegeben werden.
+cin.tie(NULL);
+// Set mit eigener Sortierfunktion.
set<point2, decltype(comp)> set1(comp);
-
// PI
#define PI (2*acos(0))
-
// STL-Debugging, Compiler flags.
-D_GLIBCXX_DEBUG
-#define _GLIBCXX_DEBUG
-
-// 128-Bit Integer/Float. Muss zum Einlesen/Ausgeben in einen int oder long long gecastet werden.
+// 128-Bit Integer/Float. Zum Einlesen/Ausgeben in long long casten.
__int128, __float128
\end{lstlisting}
@@ -101,6 +96,15 @@ $n$ Personen im Kreis, jeder $k$-te wird erschossen.
[X/G] = \frac{1}{\vert G \vert} \sum_{g \in G} \vert X^g \vert
\]
+ \item \textbf{\textsc{Polya} Counting:}
+ Sei $\pi$ eine Permutation der Menge $X$.
+ Die Elemente von $X$ können mit einer von $m$ Farben gefärbt werden.
+ Die Anzahl der Färbungen, die Fixpunkte von $\pi$ sind, ist $m^{\#(\pi)}$, wobei $\#(\pi)$ die Anzahl der Zyklen von $\pi$ ist.
+ Die Anzahl der Färbungen von Objekten einer Menge $X$ mit $m$ Farben unter einer Symmetriegruppe $G$ is gegeben durch:
+ \[
+ [X/G] = \frac{1}{\vert G \vert} \sum_{g \in G} m^{\#(g)}
+ \]
+
\item \textbf{Verteilung von Primzahlen:}
Für alle $n \in \mathbb{N}$ gilt: Ex existiert eine Primzahl $p$ mit $n \leq p \leq 2n$.
@@ -126,7 +130,44 @@ $n$ Personen im Kreis, jeder $k$-te wird erschossen.
Berechnung: Maximales Matching in bipartitem Graphen.
Dupliziere jedes $s \in S$ in $u_s$ und $v_s$.
Falls $x \leq y$, füge Kante $u_x \to v_y$ hinzu.
- Wenn Matching zu langsam ist, versuche Struktur des Posets auszunutzen und evtl. anders eine maximale Anitkette zu finden.
+ Wenn Matching zu langsam ist, versuche Struktur des Posets auszunutzen und evtl. anders eine maximale Anitkette zu finden.
+
+ \item \textbf{\textsc{Mo}'s Algorithm:}
+ SQRT-Decomposition auf $n$ Intervall Queries $[l,r]$.
+ Gruppiere Queries in $\sqrt{n}$ Blöcke nach linker Grenze $l$.
+ Sortiere nach Block und bei gleichem Block nach rechter Grenze $r$.
+ Beantworte Queries offline durch schrittweise Vergrößern/Verkleinern des aktuellen Intervalls.
+ Laufzeit:~$\mathcal{O}(n\cdot\sqrt{n})$.
+ (Anzahl der Blöcke als Konstante in Code schreiben.)
+
+ \item \textbf{Centroids of a Tree:}
+ Ein \emph{Centroid} ist ein Konten, der einen Baum in Komponenten der maximalen Größe $\frac{\vert V \vert}{2}$ splitted.
+ Es kann $2$ Centroids geben!
+ \textbf{Centroid Decomposition:}
+ Wähle zufälligen Knoten und mache DFS.
+ Verschiebe ausgewählten Knoten in Richtung des tiefsten Teilbaums, bis Centroid gefunden. Entferne Knoten, mache rekursiv in Teilbäumen weiter. Laufzeit:~$\mathcal{O}(\vert V \vert \log(\vert V \vert))$.
+
+ \item \textbf{Kreuzprodukt}
+ \[
+ a \times b =
+ \begin{pmatrix}
+ a_1 \\
+ a_2 \\
+ a_3
+ \end{pmatrix}
+ \times
+ \begin{pmatrix}
+ b_1 \\
+ b_2 \\
+ b_3
+ \end{pmatrix}
+ =
+ \begin{pmatrix}
+ a_2b_3 - a_3b_2 \\
+ a_3b_1 - a_1b_3 \\
+ a_1b_2 - a_2b_1
+ \end{pmatrix}
+ \]
\end{itemize}
\subsection{Tipps \& Tricks}
@@ -134,10 +175,10 @@ $n$ Personen im Kreis, jeder $k$-te wird erschossen.
\begin{itemize}
\item Run Tim Error:
\begin{itemize}
- \item Stack Overflow? Evtl. rekurisve Tiefensuche auf langem Pfad?
\item Array-Grenzen überprüfen. Indizierung bei $0$ oder bei $1$ beginnen?
\item Abbruchbedingung bei Rekursion?
\item Evtl. Memory Limit Exceeded?
+ \item $n$ und $m$ verwechselt?
\end{itemize}
\item Gleitkommazahlen:
@@ -155,10 +196,9 @@ $n$ Personen im Kreis, jeder $k$-te wird erschossen.
\item Integer Overflow? Teste maximale Eingabegrößen und mache Überschlagsrechnung.
\item Einabegrößen überprüfen. Sonderfälle ausprobieren.
\begin{itemize}
- \item $n = 0$, $n = -1$, $n = 1$, $n = 2^{31}-1$, $n = -2^{31}$
+ \item $n = 0$, $n = -1$, $n = 1$, $n = 2^{31}-1$, $n = -2^{31} = 2147483648$
\item $n$ gerade/ungerade
\item Graph ist leer/enthält nur einen Knoten.
- \item Liste ist leer/enthält nur ein Element.
\item Graph ist Multigraph (enthält Schleifen/Mehrfachkanten).
\item Sind Kanten gerichtet/ungerichtet?
\item Polygon ist konkav/selbstschneidend.