A:
发现一个合法的图一定是一个n-2个偶数度点,2个奇数度点的图,这两个奇数度点之间有边就删,没边就加,对应的欧拉回路图是唯一的
我们反着考虑这种对应关系,假设我们已知对图操作后得到的欧拉回路图G,可以发现对于这n个点完全图中的每一条边,若G中有这条边,删去这条边可以得到一个合法的图,若G中没有这条边,加上这条边也可以得到一个合法的图,所以其实
ans=n(n−1)2f(n)
a
n
s
=
n
(
n
−
1
)
2
f
(
n
)
,f(n)是n个点的欧拉回路图个数,可以dp求
B(bzoj4356):
这篇题解说的非常详细
概述一下
有个结论是最终的回路一定围住了左上角到每个城市左上角的最短路,证明大概是如果有一段(s,t)没有包含这个最短路,我们可以把这一段路径改成(s,t)的最短路,答案不会更劣
然后把每个端点拆成4个点,这四个点相邻的点,他们之间的边如果没有被最短路径阻隔就连一条长度为0的边
对于原图中的边,对应两条拆后的点之间的边,如果这条边不在某个城市内部就连上
要求最小环,最小环断开左上角点(1,4)之间的边后就变成了1到4的最短路,跑一次dijskral就行了
正确性的话,意会一下会发现加上(1,4)后就是围着所有城市跑了一个最小环
(其实没有图我觉得怎么说都不怎么清楚…)
C:
直接做不好做,考虑模型转换
设有n种颜色,每种颜色有ai个球,共有m个球,给每种颜色的球标号1~ai,要求标号为1的必须放在最前面
我们定义每种颜色第一次出现的位置为这种颜色的位置,对于一个颜色排列,他对应
m!∏ni=1si
m
!
∏
i
=
1
n
s
i
种合法排列,
si
s
i
是
ai
a
i
的后缀和
证明:设这个颜色排列为
p
p
,第一个球是中标号为1的球的概率是
1m
1
m
,然后去掉颜色
p1
p
1
的所有球,剩下的球里第一个球是
p2
p
2
中标号为1的球的概率是
1m−ap1....
1
m
−
a
p
1
.
.
.
.
于是这个颜色排列出现的概率是
1∏ni=1si
1
∏
i
=
1
n
s
i
如果是每种颜色都要求标号为1的球在最前面,求总的方案数,我们直接算
m!∏ai
m
!
∏
a
i
就是答案
但是我们是要对每种颜色排列求
m!∏ni=2si
m
!
∏
i
=
2
n
s
i
,就是最后一种颜色不要求标号为1的球在最前面,求合法排列数
考虑容斥,设最后一种颜色是
last
l
a
s
t
,他后面至少有
j
j
种颜色,这种颜色分别有
bi
b
i
个球,
∑bi=t
∑
b
i
=
t
,在他前面的
n−1−j
n
−
1
−
j
种颜色分别有
ci
c
i
个球,
last
l
a
s
t
的位置是
pos
p
o
s
,那么他贡献
(最后要乘上 alast a l a s t 是因为最后一种颜色不要求标号为1的球在最前面)
我们可以画减一下柿子,设
k=t+alast
k
=
t
+
a
l
a
s
t
,有
发现这个东西只和 j,k j , k 有关,那个 last l a s t 一定是在选出的 j j 个数里面枚举的,我们可以dp组合数前面的部分,在dp的方程里顺便算上
令 h[i][j][k] h [ i ] [ j ] [ k ] 表示dp了前i个数,当前选了j个数,和为k, (m−k)!(k−1)!∏ai ( m − k ) ! ( k − 1 ) ! ∏ a i 的和, f[i][j][k] f [ i ] [ j ] [ k ] 表示dp了前i个数,当前选了j个数,和为k, (m−k)!(k−1)!∏aia2last ( m − k ) ! ( k − 1 ) ! ∏ a i a l a s t 2 的和,做个 O(n2m) O ( n 2 m ) 的dp