\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{Sortieren in Linearzeit} Wenn die Eingabe aus einem kleinen Intervall $\left[0, n\right)$ stammt ist Bucketsort schneller. \subsubsection{Bucketsort} \lstinputlisting{sonstiges/bucketSort.cpp} \subsubsection{LSD-Radixsort} \lstinputlisting{sonstiges/radixSort.cpp} \subsection{Bit Operations} \lstinputlisting{sonstiges/bitOps.cpp} \subsection{Roman-Literal-Converting} \lstinputlisting{sonstiges/Roman.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) \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$. \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$!}