前言
CF又掉分
困得又不行
拿什么拯救自己
T1
有一个显然的思路是枚举中位数
如果长度是奇数的话可以直接枚举
否则,一个性质就是中位数一定是数值大小相邻的两个数的平均数
然后似乎是满足三分性的,窝认为他不满足就写了个
l
o
g
2
log^2
log2成功自闭
T2
从
A
A
A序列的
a
a
a连向
B
B
B序列的
b
+
n
b+n
b+n,目标是给边定向使得一个点只有一个入度
我怎么愚蠢的还认为是基环树
图一定是个二分图,环一定只是简单环,那么就变到了环上的问题
显然贡献只有两种取值,
70
p
t
s
70pts
70pts可以直接暴力背包
注意如何用多重背包优化
你先强行全部选
0
0
0,然后是否修改就是一个
01
01
01背包问题
100
p
t
100pt
100pt似乎是用总和在
S
S
S,不同取值不会超过
S
\sqrt S
S来做一个多重背包
先咕
**T3
窝不会容斥啊
发现题目有两个限制,这时候一般是要先去掉一个限制或者两个限制本质相同来做
这里我们采取先去掉一个限制的做法
不妨先去掉列的限制,即之后讨论行的做法都在满足列互不相同的情况下开始的
设
g
(
i
)
g(i)
g(i)表示由
i
i
i行组成的
m
m
m列矩阵,满足列互不相同的方案数
显然是
Π
j
=
1
i
(
C
i
−
j
+
1
)
\Pi_{j=1}^{i} (C^i-j+1)
Πj=1i(Ci−j+1)
考虑如何求
f
(
i
)
f(i)
f(i)表示由
i
i
i行组成的
m
m
m列矩阵,满足行列均互不相同的方案数
一般都是要套上一个容斥/反演,这里我们可以枚举有多少组本质不同的行对
g
(
n
)
g(n)
g(n)的贡献
式子写出来就是
g
(
n
)
=
∑
i
=
1
n
S
2
(
n
,
i
)
f
(
i
)
g(n)=\sum_{i=1}^{n}S_2(n,i)f(i)
g(n)=i=1∑nS2(n,i)f(i)
这里
S
2
(
i
,
j
)
S_2(i,j)
S2(i,j)表示的是第二类斯特林数
然后似乎直接斯特林反演一下?有
f
(
n
)
=
∑
i
=
0
n
(
−
1
)
n
−
i
S
1
(
n
,
i
)
g
(
i
)
f(n)=\sum_{i=0}^n(-1)^{n-i}S_1(n,i)g(i)
f(n)=i=0∑n(−1)n−iS1(n,i)g(i)
然后就可以
n
2
n^2
n2了??
**T4
琛老爷的东西太高妙了窝这种乡下人只能想自己的通俗理论
显然我们需要计数长度为
n
K
nK
nK的序列
a
a
a满足对于任意
i
<
n
K
i<nK
i<nK,都有
a
i
a_i
ai与
a
i
+
1
a_{i+1}
ai+1间有边相连
考虑容斥
注意到无边相连的情况当且仅当他们在复制的图中的同一个连通块,且他们直接有边相连。此时的反图中他们一定无边相连,故只需要考虑每个连通块有多少个无边相连的即可
如果能计算出
f
(
i
)
f(i)
f(i)表示至少有
i
i
i个位置满足相邻两个之间无边相连,那么显然可以
−
1
k
-1^k
−1k容斥
先考虑对于一个连通块如何计算出来,可以先把钦定无边相连的位置看成一个块,这样最后至少就有
n
−
块
个
数
n-块个数
n−块个数个位置不存在有边
设一个
f
[
i
]
[
j
]
[
m
a
s
k
]
f[i][j][mask]
f[i][j][mask]表示已经分成了
i
i
i个块,当前最后一个位置是
j
j
j,被选了的点状态为
m
a
s
k
mask
mask
转移枚举下一个点
k
k
k,如果
j
,
k
j,k
j,k之间有边相连,显然他们不能归到一个块,只更新
f
[
i
+
1
]
[
k
]
[
m
a
s
k
∣
b
i
n
[
k
]
]
f[i+1][k][mask|bin[k]]
f[i+1][k][mask∣bin[k]]
否则,他们允许被归到或者不归到同一个块,再更新一个
f
[
i
]
[
k
]
[
m
a
s
k
∣
b
i
n
[
k
]
]
f[i][k][mask|bin[k]]
f[i][k][mask∣bin[k]]即可
那么最后可以得到一个数组
A
A
A表示至多有
i
i
i个块的方案,即至少有
n
−
i
n-i
n−i条边不合法
不同联通块之间互不影响,可以直接对
A
A
A做
n
n
n次
N
T
T
NTT
NTT,先开够
n
K
nK
nK的空间做一发快速幂即可
最后枚举一下总共至多有多少个块
(
−
1
)
k
(-1)^k
(−1)k容斥即可
注意我们
d
p
dp
dp出来的数组是有序的,而联通块之间是无序的,所以
A
[
i
]
A[i]
A[i]需要乘一个
i
!
−
1
i!^{-1}
i!−1,并在最后乘上
j
!
j!
j!