summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormzuenni <michi.zuendorf@gmail.com>2026-03-18 13:18:41 +0100
committermzuenni <michi.zuendorf@gmail.com>2026-03-18 13:18:41 +0100
commitfbd9bfb4c17cfaa60465da0df468f1171f8ff776 (patch)
treea46d7aaf7e289674b9a5a82b08cc6f914753923c
parent3aa6577ef015cf04e7294553599f63e1572e58f6 (diff)
update
-rw-r--r--content/graph/2sat_amo.cpp38
-rw-r--r--content/math/math.tex2
-rw-r--r--content/math/tables/nim.tex2
3 files changed, 40 insertions, 2 deletions
diff --git a/content/graph/2sat_amo.cpp b/content/graph/2sat_amo.cpp
new file mode 100644
index 0000000..d50e77d
--- /dev/null
+++ b/content/graph/2sat_amo.cpp
@@ -0,0 +1,38 @@
+constexpr int var(int i) {return i << 1;} // use this!
+struct sat2 {
+ int n; // + scc variablen
+ vector<int> sol;
+ sat2(int vars) : n(vars*2), adj(n) {}
+
+ void addImpl(int a, int b) {
+ adj[a].push_back(b);
+ adj[1^b].push_back(1^a);
+ }
+ void addEquiv(int a, int b) {addImpl(a, b); addImpl(b, a);}
+ void addOr(int a, int b) {addImpl(1^a, b);}
+ void addXor(int a, int b) {addOr(a, b); addOr(1^a, 1^b);}
+ void addTrue(int a) {addImpl(1^a, a);}
+ void addFalse(int a) {addTrue(1^a);}
+ void addAnd(int a, int b) {addTrue(a); addTrue(b);}
+ void addNand(int a, int b) {addOr(1^a, 1^b);}
+
+ bool solve() {
+ scc(); //scc code von oben
+ sol.assign(n, -1);
+ for (int i = 0; i < n; i += 2) {
+ if (idx[i] == idx[i + 1]) return false;
+ sol[i] = idx[i] < idx[i + 1];
+ sol[i + 1] = !sol[i];
+ }
+ return true;
+ }
+};
+void atMostOne(const vector<ll>& vars) {
+ int k = n / 2;
+ n += 2 * sz(vars);
+ adj.resize(n);
+ for (int i = 0; i + 1 < sz(vars); i++) {
+ addImpl(vars[i], var(k+i));
+ addImpl(var(k+i), var(k+i+1));
+ addImpl(var(k+i), vars[i+1] ^ 1);
+}}
diff --git a/content/math/math.tex b/content/math/math.tex
index c303e85..162c7cc 100644
--- a/content/math/math.tex
+++ b/content/math/math.tex
@@ -426,7 +426,7 @@ $1,~1,~2,~5,~14,~42,~132,~429,~1430,~4862,~16796,~58786,~208012,~742900$
\item Anzahl an Klammerausdrücken mit $n+k$ Klammerpaaren, die mit $\texttt{(}^k$ beginnen.
\end{itemize}
\[C^k_0 = 1\qquad C^k_n = \sum\limits_{\mathclap{a_0+a_1+\dots+a_k=n}} C_{a_0}C_{a_1}\cdots C_{a_k} =
-\frac{k+1}{n+k+1}\binom{2n+k}{n} = \frac{(2n+k-1)\cdot(2n+k)}{n(n+k+1)} \cdot C_{n-1}\]
+\frac{k+1}{n+k+1}\binom{2n+k}{n} = \frac{(2n+k-1)\cdot(2n+k)}{n(n+k+1)} \cdot C^k_{n-1}\]
\paragraph{\textsc{Euler}-Zahlen 1. Ordnung:}
$|~1~|~1~|~1,~1~|~1,~4,~1~|~1,~11,~11,~1~|~1,~26,~66,~26,~1~|$
diff --git a/content/math/tables/nim.tex b/content/math/tables/nim.tex
index 66e289e..5a196e5 100644
--- a/content/math/tables/nim.tex
+++ b/content/math/tables/nim.tex
@@ -86,7 +86,7 @@
\textsc{Kayles}' Nim:\newline
Zwei mögliche Züge:\newline
- 1) Nehme beliebige Zahl.\newline
+ 1) Nehme $1$ oder $2$.\newline
2) Teile Stapel in zwei Stapel (mit Entnahme).&
Berechne $\mathit{SG}_n$ für kleine $n$ rekursiv.\newline
$n \in [72,83]: \quad 4, 1, 2, 8, 1, 4, 7, 2, 1, 8, 2, 7$\newline