diff options
| author | Paul Jungeblut <paul.jungeblut@gmail.com> | 2016-10-06 00:17:59 +0200 |
|---|---|---|
| committer | Paul Jungeblut <paul.jungeblut@gmail.com> | 2016-10-06 00:17:59 +0200 |
| commit | 442921c7bd93e9e111845de6c22f66753b41e11a (patch) | |
| tree | be6c168303240c168def228c763614d3a9d1c91e /other/other.tex | |
| parent | 7c97303ec8fc5dfc278198687d8c5154e0cd1baf (diff) | |
Renamin sonstiges ot other.
Diffstat (limited to 'other/other.tex')
| -rw-r--r-- | other/other.tex | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/other/other.tex b/other/other.tex new file mode 100644 index 0000000..6bc4733 --- /dev/null +++ b/other/other.tex @@ -0,0 +1,89 @@ +\section{Sonstiges} + +\subsection{2-SAT} +\begin{enumerate} + \item Bedingungen in 2-CNF formulieren. + \item Implikationsgraph bauen, $\left(a \vee b\right)$ wird zu $\neg a \Rightarrow b$ und $\neg b \Rightarrow a$. + \item Finde die starken Zusammenhangskomponenten. + \item Genau dann lösbar, wenn keine Variable mit ihrer Negation in einer SCC liegt. +\end{enumerate} + +\subsection{Zeileneingabe} +\lstinputlisting{other/split.cpp} + +\subsection{Bit Operations} +\lstinputlisting{other/bitOps.cpp} + +\subsection{Josephus-Problem} +$n$ Personen im Kreis, jeder $k$-te wird erschossen. +\begin{description} + \item[Spezialfall $k=2$:] Betrachte Binärdarstellung von $n$. + Für $n = 1b_1b_2b_3..b_n$ ist $b_1b_2b_3..b_n1$ die Position des letzten Überlebenden. + (Rotiere $n$ um eine Stelle nach links) + \lstinputlisting{other/josephus2.cpp} + \item[Allgemein:] Sei $F(n,k)$ die Position des letzten Überlebenden. + Nummeriere die Personen mit $0, 1, \ldots, n-1$. + Nach Erschießen der $k$-ten Person, hat der Kreis noch Größe $n-1$ und die Position des Überlebenden ist jetzt $F(n-1,k)$. + Also: $F(n,k) = (F(n-1,k)+k)\%n$. Basisfall: $F(1,k) = 0$. + \lstinputlisting{other/josephusK.cpp} +\end{description} +\textbf{Beachte bei der Ausgabe, dass die Personen im ersten Fall von $1, \ldots, n$ nummeriert sind, im zweiten Fall von $0, \ldots, n-1$!} + +\subsection{Gemischtes} +\begin{itemize}[itemsep=5mm] + \item \emph{\textsc{Johnsons} Reweighting Algorithmus:} + Füge neue Quelle \lstinline{S} hinzu, mit Kanten mit Gewicht 0 zu allen Knoten. + Nutze \textsc{Bellmann-Ford} zum Betsimmen der Entfernungen \lstinline{d[i]} von \lstinline{S} zu allen anderen Knoten. + Stoppe, wenn es negative Zyklen gibt. + Sonst ändere die gewichte von allen Kanten \lstinline{(u,v)} im ursprünglichen Graphen zu \lstinline{d[u]+w[u,v]-d[v]}. + Dann sind alle Kantengewichte nichtnegativ, \textsc{Dijkstra} kann angewendet werden. + \item Für ein System von Differenzbeschränkungen: + Ändere alle Bedingungen in die Form $a-b \leq c$. + Für jede Bedingung füge eine Kante \lstinline{(b,a)} mit Gweicht \lstinline{c} ein. + Füge Quelle \lstinline{s} hinzu, mit Kanten zu allen Knoten mit Gewicht 0. + Nutze \textsc{Bellmann-Ford}, um die kürzesten Pfade von \lstinline{s} aus zu finden. + \lstinline{d[v]} ist mögliche Lösung für \lstinline{v}. + \item Min-Weight-Vertex-Cover im bipartiten Graph: + Partitioniere in \lstinline{A, B} und füge Kanten \lstinline{s -> A} mit Gewicht \lstinline{w(A)} und Kanten \lstinline{B -> t} mit Gewicht \lstinline{w(B)} hinzu. + Füge Kanten mit Kapazität $\infty$ von \lstinline{A} nach \lstinline{B} hinzu, wo im originalen Graphen Kanten waren. + Max-Flow ist die Lösung.\newline + Im Residualgraphen: + \begin{itemize} + \item Das Vertex-Cover sind die Knoten inzident zu den Brücken. \emph{oder} + \item Die Knoten in \lstinline{A}, die \emph{nicht} von \lstinline{s} erreichber sind und die Knoten in \lstinline{B}, die von \lstinline{erreichber} sind. + \end{itemize} + \item Allgemeiner Graph: + Das Komplement eines Vertex-Cover ist ein Independent Set. + $\Rightarrow$ Max Weight Independent Set ist Komplement von Min Weight Vertex Cover. + \item Bipartiter Graph: + Min Vertex Cover (kleinste Menge Kanten, die alle Knoten berühren) = Max Matching. + \item Bipartites Matching mit Gewichten auf linken Knoten. + Minimiere Matchinggewicht. + Lösung: Sortiere Knoten links aufsteigend nach Gewicht, danach nutze normlen Algorithmus (\textsc{Kuhn}, Seite \pageref{kuhn}) + \item \textbf{Tobi, cool down!} +\end{itemize} + +\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. +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. Muss zum Einlesen/Ausgeben in einen int oder long long gecastet werden. +__int128 +\end{lstlisting} |
