【bzoj 3622】【JZOJ 5429】 排列

58 篇文章 0 订阅

Description

给两组 n 个数 a[], b[] ,保证数字互不相同,问有多少种将它们配对的方式,使得 a[i] > b[i] 的对数恰好为 k
1<=k<=n<=4000

Analysis

看到恰好,这肯定很难做的,考虑套路:转化成至少再减去多的
那么我们可以开始愉快地dp
设f[i][j]表示上面到第i个数,保证形成了j个贡献的方案数

f[i][j]=f[i1][j]+f[i1][j1](num[i](j1))

num[i] 表示a[i]大于num[i]个b[j]
这样dp我们只确定了匹配的方案数,对于未匹配的方案数还要乘上个(n-i)!,即
设 g[i] 表示恰好 i 组 a[k] > b[k] 的方案数
g[i]=f[n][i](ni)!nj=i+1g[j]C(j,i)
感受一下
O(nk)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值