DTOJ 4746. 我家钥匙放在哪了

题意

张士超是你在上海音乐学院的基友,关系非常好。你们在五角场附件合租了一间屋子。由于你那么有钱,一下买了 n n n 把相同的锁,并一下配了 N N N 把相同的钥匙。你用这些锁并联锁住你家的大门,需要同时插入 n n n 把钥匙才能打开。

一天晚上,张士超带着华师大的姑娘去了闵行。而且还把你们的 N N N 把钥匙全部藏在了一些奇怪的地方。

张士超有 M M M 个可能的地方来藏钥匙,比如地毯,花园,或门口大爷。每处藏匿位置至多可容纳 a i a_i ai 把钥匙,并且有 p i p_i pi 的独立概率被你找到。当然如果一个位置被你找到了,你就会拿到这里的所有钥匙。你必须至少拿到其中 n n n 把钥匙才能回家。

假设张士超按所有合法方案中的任何一种方案放钥匙的概率相同。现在你希望算出你可以找到钥匙顺利回家的概率,如果这个概率太小,就干脆打车跑到闵行去把张士超痛扁一顿。

张士超在闵行乐不思蜀,你却在五角场无家可归。你必须在2s内算出答案,否则就会在寒风凛冽的国定路被冻死。

998244353 998244353 998244353 取模。为避免除法可能出现的问题,请输出答案乘上合法方案总数的积,即放钥匙的所有方案中能回家的概率之和。合法方案即一个数组 0 ≤ b i ≤ a i 0 \le b_i \le a_i 0biai 满足 0 ≤ b i ≤ a i , ∑ i b i = N 0 \leq b_{i} \leq a_{i}, \sum_{i} b_{i}=N 0biai,ibi=N

所有测试数据满足 1 ≤ M ≤ 100 , 1 ≤ n ≤ N ≤ ∑ a i , 1 ≤ N , a i ≤ 1 0 9 , 1 ≤ d ≤ 1 0 7 , 0 ≤ p i < 998244353 , N ≤ 100 d , d ∣ ( a i + 1 ) 1 \leq M \leq 100,1 \leq n \leq N \leq \sum a_{i}, 1 \leq N, a_{i} \leq 10^{9}, 1 \leq d \leq 10^{7}, 0 \leq p_{i}<998244353,N \leq 100 d, d |\left(a_{i}+1\right) 1M100,1nNai,1N,ai109,1d107,0pi<998244353N100d,d(ai+1),但并不保证 d ∣ N d | N dN d ∣ n d | n dn

Other Constraints M , N M,N M,N P o i n t s Points Points
a i ≤ 10 a_i \le 10 ai10 M ≤ 6 M \le 6 M610
n = 1 n=1 n=1 n = N n=N n=N N ≤ 100 N \le 100 N1005
n = 1 n=1 n=1 n = N n=N n=N15
p i ∈ { 0 , 1 } p_{i} \in\{0,1\} pi{0,1} N ≤ 100 N \le 100 N1005
p i ∈ { 0 , 1 } p_{i} \in\{0,1\} pi{0,1}15
No More Constraints N ≤ 100 N \le 100 N10030
No More Constraints20

题解

注意到 N ≤ 100 d N\le100d N100d,考虑每个位置先选若干个 d d d,最后把剩下的分给每个位置,要求每个位置少于 d d d。考虑 n n n的限制,如果概率都是 0 0 0 1 1 1,即在 p = 1 p=1 p=1位置要放的数总和不少于 n n n;考虑把每一种可能性以概率的积的形式记在DP中,先DP出总共放了 i i i d d d,在选的位置放了 j j j d d d,选了 k k k个位置的概率总和。

剩下的问题在于把 x x x个数放到 M M M个位置,每个位置小于 d d d,前 k k k个位置放不少于 y y y个。考虑后者,由于 M M M较小,考虑枚举第 y y y个数在哪个位置,再乘上组合数即可。对于前者,在DP的时候直接容斥,即当前的位置若选了不少于 d d d个就 ∗ − 1 *-1 1。这样就做完了,效率为 O ( n 4 ) O(n^{4}) O(n4)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值