首先看到题,可以算出应该有多少对
A
A
比大。然后我们假设可以硬点那些
A
A
是大于与他配对的的,然后套用我在这篇文章中说的方法(本质上是二项式反演),就可行了。然后考虑怎么硬点,这个貌似一个
dp
dp
就完了?
dp
dp
就是既然要硬点,我们就强行
dp
dp
那些被钦定啊硬点了的点。设
dp[i][j]
dp[i][j]
表示考虑到
A
A
的前
i
i
项,然后我们已经硬点了
j
j
个
A
A
比
B
B
大的方案数。自然,
A
A
应当要先排一下序。
为什么?考虑
dp
dp
是怎么转移的:
1)如果这个
A
A
不硬点:
dp[i-1][j]→dp[i][j]
dp[i-1][j]
→
dp[i][j]
2)如果要硬点:
coef×dp[i-1][j-1]→dp[i][j]
c
o
e
f
×
dp[i-1][j-1]
→
dp[i][j]
那么这个
coef
c
o
e
f
怎么确定?我们首先可以算出比这个
Ai
A
i
小的
Bj
B
j
的个数,然后减去之前选了的
Bj
B
j
,就是这次的方案。排了序之后,之前选的
B
B
就全部在比这个
Ai
A
i
小的
Bj
B
j
中了,减去就行了。
BZOJ 3622 已经没有什么好害怕的了
最新推荐文章于 2019-06-20 16:39:00 发布