• LOJ#6374 网格


    题解:

    挺好的一道题

    两次容斥+一次二项式反演

    首先考虑部分分不存在k的限制

    然后我们发现两维之间是互相独立的

    下面以x轴为例

    然后问题就变成了

    $$sumlimits_{i=1}^{R} {xi}=k (xi<=Mx)$$

    这个东西是个经典问题,容斥做就可以了

    $$h(R)=sumlimits_{i=0}^{R}{{(-1)}^{i}*C_R^i *p(i)}$$

    $$p(x)= C_{Tx-(Mx+1)*x+R-1}^{R-1}$$

    但是这样还不对,因为走$(0,0)$是不合法的

    所以我们求出来的$h(R)$是至多走了$R$步的方案数

    令$g(x)$表示正好走了$x$步$(0,0)$的方案数

    $$h(R)=sumlimits_{i=0}^{R} { C_R^i *g(i) }$$

    由这个可以二项式反演得出$g(R)$

    $$g(R)=sumlimits_{i=0}^{R} { {(-1)}^{R-i} * C_R^i *h(i) }$$

    这个复杂度是$O(R*MIN(R,Tx/Mx))$的

    现在加入了k个不能走的限制

    显然我们需要继续容斥

    因为都是$g$的倍数所以可以$/g$后进行

    $dp[i][j]$表示选出$i$个和为$j$的方案数

    $$ans=sumlimits_{i=0}^{n} { {(-1)}^{i} sumlimits_{j=0}^{100} {dp[i][j]* C_R^i *calc(Tx-j*G,R-i)} }$$

    时间复杂度的话

    注意到因为$g>=1e4$,所以$Mx$也要$>=1e4$

    那么复杂度就是$O(50*(1e6/1e4)*(1e6/1e4)*1e3)$

    并且这个很显然是不满的

  • 相关阅读:
    react-native ListView使用详解
    react-native 简单的导航
    React Native组件介绍
    React Native图片控件的使用
    Hadoop综合大作业
    hive基本操作与应用
    用mapreduce 处理气象数据集
    熟悉常用的HBase操作
    爬虫大作业
    熟悉常用的HDFS操作
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/10190805.html
Copyright © 2020-2023  润新知