首页 > 其他分享 >几道数数

几道数数

时间:2024-09-02 20:24:57浏览次数:11  
标签:数数 frac sum times 几道 binom 式子

abc240 g

只考虑 \(0 \leq X, Y, Z\) 的情况,显然小于 0 时的路径可以与大于 0 的一一对应。

考虑我们三个方向的增量分别需要 \(X, Y, Z\),剩下的步数显然是通过走一步该方向又走回来这样子消耗。

记 \(m = (N - X - Y - Z) / 2\)。如果 \(N - X - Y - Z\) 是奇数或者 \(N < X + Y +Z\) 就无解。

枚举三个方向分别多走了几步。

假设我们在 \(X\) 方向多走了 \(i\) 步,那么需要用 \(i\) 步再走回来。

\[\sum_{i = 0}^{m} \sum_{j = 0}^{m - i} \binom {N}{X + i} \binom {N - X - i}{i} \binom{N - X - 2 \times i}{Y + j} \binom{N - x - 2 \times i - Y - j}{j}\binom{N - x - 2 * i - Y - 2 * j}{Z + m - i - j}\binom{N - x - i - Y - j - Z - m}{m - i - j} \]

发现这是个多重集组合数,可以给它变成

\[\sum_{i = 0}^{m} \sum_{j = 0}^{m - i} \frac{N!}{(x + i)!i!(Y + j)!j!(Z + m - i - j)!(m - i - j)!} \]

把与 \(j\) 无关的提出来

\[\sum_{i = 0}^{m} \frac{N!}{(x + i)!i!}\sum_{j = 0}^{m - i} \frac{1}{(Y + j)!j!(Z + m - i - j)!(m - i - j)!} \]

希望后面那一坨带 \(j\) 的式子优美一点,发现 \(Y + j + m - i - j = Y + m - i, Z + m - i - j + j = Z + m - i\),给他重新凑一下组合系数

\[\sum_{i = 0}^{m} \frac{N!}{(x + i)!i!(Y + m - i)!(Z + m - i)!}\sum_{j = 0}^{m - i} \frac{(Y + m - i)!}{(Y + j)!(m - i - j)!} \frac{(Z + m - i)!}{(Z + m - i - j)!j!} \]

\[= \sum_{i = 0}^{m} \frac{N!}{(x + i)!i!(Y + m - i)!(Z + m - i)!}\sum_{j = 0}^{m - i} \binom {Y + m - i}{Y + j} \binom{Z + m - i}{Z + m - i - j} \]

对后面那个式子使用范德蒙德卷积

\[\sum_{i = 0}^{m} \frac{N!}{(x + i)!i!(Y + m - i)!(Z + m - i)!}\binom{Y + Z + 2 \times m - 2 \times i}{Y + Z + m - i} \]

时间复杂度 \(O(N)\)。

标签:数数,frac,sum,times,几道,binom,式子
From: https://www.cnblogs.com/Svemit/p/18393466

相关文章

  • Python/MySQL无法正确持久化整数数据
    如果在Python中使用MySQL时无法正确持久化整数数据,可能有以下几个原因:数据类型不匹配:确保在MySQL表中定义的列的数据类型与你在Python中要插入或更新的整数数据类型相匹配。例如,如果列的数据类型是INT,则在Python中应该使用整数类型(如int)来表示数据。连接参数问题:检查你......
  • 中国各地级市数字经济指数数据(2000-2022年)
    地级市数字经济指数是衡量一个地区数字经济发展水平的综合指标。它以互联网发展为核心,涵盖数字互联网发展和数字普惠金融两大方面,为评估和比较不同地区数字经济的发展提供了重要工具。2000-2022年中国各地级市数字经济指数数据(经济指数数据、计算方法、参考文献).zip资源-CSDN......
  • 2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount
    2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount(arr,val)可以返回数组arr中大于val的元素数量。按照以下规则进行n次操作,将nums中的元素分配到两个数组arr1和arr2中:1.第一次操作将nums[1]加入arr1。2.第二次操作将nums[2]加入arr2。3.对......
  • 每日OJ_牛客_求正数数组的最小不可组成和(01背包)
    目录牛客_求正数数组的最小不可组成和(01背包)解析代码牛客_求正数数组的最小不可组成和(01背包)求正数数组的最小不可组成和_百度笔试题_牛客网题目:给定一个全是正数的数组arr,定义一下arr的最小不可组成和的概念:arr的所有非空子集中,把每个子集内的所有元素加起来会出现......
  • 2024-08-21:用go语言,给定一个从 0 开始索引的整数数组 nums 和一个整数 k,请设计一个算
    2024-08-21:用go语言,给定一个从0开始索引的整数数组nums和一个整数k,请设计一个算法来使得数组中的所有元素都大于或等于k,返回所需的最少操作次数。每次操作可以执行以下步骤:1.选择数组中最小的两个整数x和y。2.从数组中删除x和y。3.计算min(x,y)*2+max(x,y)......
  • [题解]P3311 [SDOI2014] 数数
    P3311[SDOI2014]数数看到多模式匹配,我们考虑先对所有模式串建立AC自动机。然后发现这道题和P4052文本生成器(题解)挺像的,后者让求包含至少一个模式串的个数,这道题让求一个也不包含的个数,这个就是一个用不用\(26^m\)去减的问题,很好处理。但这道题还多了一个条件,“幸运数”必须\(......
  • 2024-08-17:用go语言,给定一个从0开始的整数数组nums和一个整数k, 每次操作可以删除数组
    2024-08-17:用go语言,给定一个从0开始的整数数组nums和一个整数k,每次操作可以删除数组中的最小元素。你的目标是通过这些操作,使得数组中的所有元素都大于或等于k。请计算出实现这个目标所需的最少操作次数。输入:nums=[2,11,10,1,3],k=10。输出:3。解释:第一次操作后,nums变......
  • 2024-08-14:用go语言,给定两个长度分别为n和m的整数数组nums和changeIndices,下标从1开始
    2024-08-14:用go语言,给定两个长度分别为n和m的整数数组nums和changeIndices,下标从1开始。初始时,nums中所有下标均未标记。从第1秒到第m秒,每秒可以选择以下四种操作之一:1.选择范围[1,n]中一个下标i,将nums[i]减少1。2.将nums[changeIndices[s]]设为任意非负整数。3.选择范围......
  • 力扣1.给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值
    1.给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。letnums=[1,2,4,5,3,2,4,6......
  • leetcode数论(2521. 数组乘积中的不同质因数数目)
    前言经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。数论包含最大公约数(>=2个数)、最大公约数性质、最小公倍数、区间范围质因素计数(最下间隔)、质因素分解、判断质数、平方根、立方根、互质、同余等等。描述给你一个正整数数组......