Skip to content

Commit fbd9bfb

Browse files
committed
update
1 parent 3aa6577 commit fbd9bfb

3 files changed

Lines changed: 40 additions & 2 deletions

File tree

content/graph/2sat_amo.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
constexpr int var(int i) {return i << 1;} // use this!
2+
struct sat2 {
3+
int n; // + scc variablen
4+
vector<int> sol;
5+
sat2(int vars) : n(vars*2), adj(n) {}
6+
7+
void addImpl(int a, int b) {
8+
adj[a].push_back(b);
9+
adj[1^b].push_back(1^a);
10+
}
11+
void addEquiv(int a, int b) {addImpl(a, b); addImpl(b, a);}
12+
void addOr(int a, int b) {addImpl(1^a, b);}
13+
void addXor(int a, int b) {addOr(a, b); addOr(1^a, 1^b);}
14+
void addTrue(int a) {addImpl(1^a, a);}
15+
void addFalse(int a) {addTrue(1^a);}
16+
void addAnd(int a, int b) {addTrue(a); addTrue(b);}
17+
void addNand(int a, int b) {addOr(1^a, 1^b);}
18+
19+
bool solve() {
20+
scc(); //scc code von oben
21+
sol.assign(n, -1);
22+
for (int i = 0; i < n; i += 2) {
23+
if (idx[i] == idx[i + 1]) return false;
24+
sol[i] = idx[i] < idx[i + 1];
25+
sol[i + 1] = !sol[i];
26+
}
27+
return true;
28+
}
29+
};
30+
void atMostOne(const vector<ll>& vars) {
31+
int k = n / 2;
32+
n += 2 * sz(vars);
33+
adj.resize(n);
34+
for (int i = 0; i + 1 < sz(vars); i++) {
35+
addImpl(vars[i], var(k+i));
36+
addImpl(var(k+i), var(k+i+1));
37+
addImpl(var(k+i), vars[i+1] ^ 1);
38+
}}

content/math/math.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ \subsection{Kombinatorik}
426426
\item Anzahl an Klammerausdrücken mit $n+k$ Klammerpaaren, die mit $\texttt{(}^k$ beginnen.
427427
\end{itemize}
428428
\[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} =
429-
\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}\]
429+
\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}\]
430430

431431
\paragraph{\textsc{Euler}-Zahlen 1. Ordnung:}
432432
$|~1~|~1~|~1,~1~|~1,~4,~1~|~1,~11,~11,~1~|~1,~26,~66,~26,~1~|$

content/math/tables/nim.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686

8787
\textsc{Kayles}' Nim:\newline
8888
Zwei mögliche Züge:\newline
89-
1) Nehme beliebige Zahl.\newline
89+
1) Nehme $1$ oder $2$.\newline
9090
2) Teile Stapel in zwei Stapel (mit Entnahme).&
9191
Berechne $\mathit{SG}_n$ für kleine $n$ rekursiv.\newline
9292
$n \in [72,83]: \quad 4, 1, 2, 8, 1, 4, 7, 2, 1, 8, 2, 7$\newline

0 commit comments

Comments
 (0)