E Edward Gaming, the Champion
输出字符串中一共出现了多少次 e d g n b edgnb edgnb,考虑到所有的字母均不相同,顺序处理即可。
F Encoded Strings I
按照要求进行替换,然后快速排序, c m p cmp cmp函数按照字典序比较即可。
J Luggage Lock
考虑到状态数不多,我们强制从 0000 0000 0000开始变换, b f s bfs bfs即可,可以通过本题。
队友在 v p vp vp时写了个别的做法,留坑待填。
B Bitwise Exclusive-OR Sequence
首先发现 w w w的位与位之间没有影响,这样我们考虑将 30 30 30位分别拆开来做。这样问题就转化成了一个边权为 0 , 1 0,1 0,1的图,是否存在一种点染色的方案,使得两点的异或值等于该边的边权。考虑到如果一个联通块存在合法的染色方案,那么方案有且仅有两种,即将 01 01 01进行翻转,这样我们对每个联通块进行 d f s dfs dfs,两种染色法取 m i n min min即可。
H Line Graph Matching
首先考虑一个联通块如果有偶数条边,可以证明总能将所有边选上,如果是奇数条边,我们要考虑删去一条边,那么我们如果选择了非桥边,那么就转化成了一个偶数的联通块,如果选择了桥边,如果分成的两个联通块均为奇数,那么这一条边一定不能被删去,因为又转化成了两个相同的子问题,答案一定更劣,如果分成的两个联通块为偶数,那么就可以考虑删去。在上述情况下选择边权最小的边即可,关于边数统计就是一个子树的 ∑ d e g [ i ] − 1 2 \frac{\sum deg[i]-1}{2} 2∑deg[i]−1, T a r j a n Tarjan Tarjan找桥即可。
I Linear Fractional Transformation
设
a
,
b
,
c
,
d
a,b,c,d
a,b,c,d是任意四个互不相同的有限复数,则称
c
−
a
c
−
b
:
d
−
a
d
−
b
\frac{c-a}{c-b}:\frac{d-a}{d-b}
c−bc−a:d−bd−a为这四个数的交比,记作
(
a
,
b
,
c
,
d
)
=
c
−
a
c
−
b
:
d
−
a
d
−
b
(a,b,c,d)=\frac{c-a}{c-b}:\frac{d-a}{d-b}
(a,b,c,d)=c−bc−a:d−bd−a而在分式线性变换中,任意四点交比不变
下面证明这一点:
现有一分式线性变换
f
(
z
)
=
a
z
+
b
c
z
+
d
f(z)=\frac{az+b}{cz+d}
f(z)=cz+daz+b设
x
,
y
,
z
,
w
x,y,z,w
x,y,z,w为任意两个互不相同的有限复数,其经过分式线性变换
f
f
f后为
x
′
,
y
′
,
z
′
,
w
′
x',y',z',w'
x′,y′,z′,w′则
z
′
−
x
′
=
a
z
+
b
c
z
+
d
−
a
x
+
b
c
x
+
d
=
(
a
z
+
b
)
(
c
x
+
d
)
−
(
a
x
+
b
)
(
c
z
+
d
)
(
c
z
+
d
)
(
c
x
+
d
)
=
(
b
d
−
a
c
)
(
z
−
x
)
(
c
z
+
d
)
(
c
x
+
d
)
z'-x'=\frac{az+b}{cz+d}-\frac{ax+b}{cx+d}=\frac{(az+b)(cx+d)-(ax+b)(cz+d)}{(cz+d)(cx+d)}=\frac{(bd-ac)(z-x)}{(cz+d)(cx+d)}
z′−x′=cz+daz+b−cx+dax+b=(cz+d)(cx+d)(az+b)(cx+d)−(ax+b)(cz+d)=(cz+d)(cx+d)(bd−ac)(z−x)故
z
′
−
y
′
=
(
b
d
−
a
c
)
(
z
−
y
)
(
c
z
+
d
)
(
c
y
+
d
)
z'-y'=\frac{(bd-ac)(z-y)}{(cz+d)(cy+d)}
z′−y′=(cz+d)(cy+d)(bd−ac)(z−y)所以
z
′
−
x
′
z
′
−
y
′
=
(
z
−
x
)
(
c
y
+
d
)
(
z
−
y
)
(
c
x
+
d
)
,
\frac{z'-x'}{z'-y'}=\frac{(z-x)(cy+d)}{(z-y)(cx+d)},
z′−y′z′−x′=(z−y)(cx+d)(z−x)(cy+d),且
w
′
−
x
′
w
′
−
y
′
=
(
w
−
x
)
(
c
y
+
d
)
(
w
−
y
)
(
c
x
+
d
)
\frac{w'-x'}{w'-y'}=\frac{(w-x)(cy+d)}{(w-y)(cx+d)}
w′−y′w′−x′=(w−y)(cx+d)(w−x)(cy+d)所以
z
′
−
x
′
z
′
−
y
′
:
w
′
−
x
′
w
′
−
y
′
=
z
−
x
z
−
y
:
w
−
x
w
−
y
\frac{z'-x'}{z'-y'}:\frac{w'-x'}{w'-y'}=\frac{z-x}{z-y}:\frac{w-x}{w-y}
z′−y′z′−x′:w′−y′w′−x′=z−yz−x:w−yw−x,即
(
x
,
w
,
z
,
w
)
=
(
x
′
,
y
′
,
z
′
,
w
′
)
(x,w,z,w)=(x',y',z',w')
(x,w,z,w)=(x′,y′,z′,w′)
因此在本题可理解为有 ( z 0 , z 1 , z 2 , z 3 ) (z_{0},z_{1},z_{2},z_{3}) (z0,z1,z2,z3)已知 z 0 , z 1 , z 2 , z 3 , w 1 , w 2 , w 3 , z_{0},z_{1},z_{2},z_{3},w_{1},w_{2},w_{3}, z0,z1,z2,z3,w1,w2,w3,求 w 0 w_{0} w0
即 w 2 − w 0 w 2 − w 1 : w 3 − w 0 w 3 − w 2 = z 2 − z 0 z 2 − z 1 : z 3 − z 0 z 3 − z 1 \frac{w_{2}-w_{0}}{w_{2}-w_{1}}:\frac{w_{3}-w_{0}}{w_{3}-w_{2}}=\frac{z_{2}-z_{0}}{z_{2}-z_{1}}:\frac{z_{3}-z_{0}}{z_{3}-z_{1}} w2−w1w2−w0:w3−w2w3−w0=z2−z1z2−z0:z3−z1z3−z0解出 w 0 w_{0} w0
w 2 − w 0 w 3 − w 0 = w 0 − w 2 w 0 − w 3 = ( z 2 − z 0 ) ∗ ( z 3 − z 1 ) ∗ ( w 2 − w 1 ) ( z 2 − z 1 ) ∗ ( z 3 − z 0 ) ∗ ( w 3 − w 2 ) = r w 0 = w 2 − r w 3 1 − r \frac{w_{2}-w_{0}}{w_{3}-w_{0}}=\frac{w_{0}-w_{2}}{w_{0}-w_{3}}=\frac{(z_{2}-z_{0})*(z_{3}-z_{1})*(w_{2}-w_{1})}{(z_{2}-z_{1})*(z_{3}-z_{0})*(w_{3}-w_{2})}=r\\w_{0}=\frac{w_{2}-rw_{3}}{1-r} w3−w0w2−w0=w0−w3w0−w2=(z2−z1)∗(z3−z0)∗(w3−w2)(z2−z0)∗(z3−z1)∗(w2−w1)=rw0=1−rw2−rw3
L Perfect Matchings
考虑容斥,恰好选择
0
0
0条树上的边(点对匹配)的方案数等于
a
n
s
=
∑
0
≤
i
≤
n
2
(
−
1
)
i
s
i
ans=\sum_{0 \leq i \leq \frac{n}{2}} (-1)^i s_i
ans=0≤i≤2n∑(−1)isi
其中
s
i
s_i
si表示强制选择
i
i
i条树上的边,剩下的边随意选择的方案数。
首先考虑在
2
n
2n
2n个点的完全图中随意选择
n
n
n条边的的方案数,不难推得为
C
2
n
n
n
!
2
n
\frac{C_{2n}^{n}n!}{2^n}
2nC2nnn!
考虑这个式子的组合意义,就是将
2
n
2n
2n个点分成两组,进行随意连边,由于每两个同行的可以交换位置,这样就算重了
2
n
2^n
2n次。
接着我们统计强制选择
i
i
i条树上的边的方案数,考虑
f
[
u
]
[
j
]
[
0
/
1
]
f[u][j][0/1]
f[u][j][0/1]表示以
u
u
u为根的子树,我们选择了
j
j
j条边(点对匹配),
u
u
u有/没有进行匹配的方案数,枚举子树大小进行计算,考虑将两个子树合并。
f
[
u
]
[
j
+
k
]
[
0
]
+
=
f
[
u
]
[
j
]
[
0
]
∗
(
f
[
v
]
[
k
]
[
0
]
+
f
[
v
]
[
k
]
[
1
]
)
f[u][j+k][0]+=f[u][j][0]*(f[v][k][0]+f[v][k][1])
f[u][j+k][0]+=f[u][j][0]∗(f[v][k][0]+f[v][k][1])
f
[
u
]
[
j
+
k
]
[
1
]
+
=
f
[
u
]
[
j
]
[
1
]
∗
(
f
[
v
]
[
k
]
[
0
]
+
f
[
v
]
[
k
]
[
1
]
)
f[u][j+k][1]+=f[u][j][1]*(f[v][k][0]+f[v][k][1])
f[u][j+k][1]+=f[u][j][1]∗(f[v][k][0]+f[v][k][1])
f
[
u
]
[
j
+
k
+
1
]
[
1
]
+
=
f
[
u
]
[
j
]
[
0
]
∗
f
[
v
]
[
k
]
[
0
]
f[u][j+k+1][1]+=f[u][j][0]*f[v][k][0]
f[u][j+k+1][1]+=f[u][j][0]∗f[v][k][0]
前两个式子不难理解,考虑第三个式子就是如果
u
u
u和
v
v
v都没有进行匹配,我们将这两个点进行匹配就会多出一条边。
这样我们的答案就是
a
n
s
=
∑
0
≤
i
≤
n
2
(
−
1
)
i
(
f
[
1
]
[
i
]
[
0
]
+
f
[
1
]
[
i
]
[
1
]
)
∗
C
2
n
−
2
i
n
−
i
(
n
−
i
)
!
2
(
n
−
i
)
ans=\sum_{0 \leq i \leq \frac{n}{2}} (-1)^i (f[1][i][0]+f[1][i][1])*\frac{C_{2n-2i}^{n-i}(n-i)!}{2^(n-i)}
ans=0≤i≤2n∑(−1)i(f[1][i][0]+f[1][i][1])∗2(n−i)C2n−2in−i(n−i)!