diff options
Diffstat (limited to 'sonstiges/sonstiges.tex')
| -rw-r--r-- | sonstiges/sonstiges.tex | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/sonstiges/sonstiges.tex b/sonstiges/sonstiges.tex deleted file mode 100644 index 8148dbf..0000000 --- a/sonstiges/sonstiges.tex +++ /dev/null @@ -1,89 +0,0 @@ -\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{sonstiges/split.cpp} - -\subsection{Bit Operations} -\lstinputlisting{sonstiges/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{sonstiges/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{sonstiges/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} |
