首页 > 其他分享 >组合数前缀和

组合数前缀和

时间:2022-12-20 21:46:27浏览次数:53  
标签:前缀 组合 sum 很酷 做法 Theta prod log

众所周知有经典问题:\(T\) 组询问 \(\sum_{i=0}^m \binom{n}{i}\)。听说戴老师一年多前就有个 \(n \log^2 n\) 的做法,感觉很厉害,但是搜不到做法,也想尝试自己推推。

今天受到了一些启发,好像推出了个 \(\Theta(n \log^2 n)\) 的做法(未经验证 QAQ),感觉很厉害,就来写篇博客。


很酷的第一步:设 \(f_m(x) = \sum_{i=0}^m \frac{\prod_{j=0}^{i-1} (x-j)}{i!}\),要求的就是 \(f_m(n)\)。

这就意味着假设我们把这个多项式丢到线段树上,多次多点求值就是 \(\Theta(n \log^3 n)\) 的。

仔细思考一下就会发现是因为重复的点值,复杂度高了。考虑如何避免:我们直接把答案写成 \(\sum_{i=0}^m \frac{\prod_{j=0}^{i-1} (x-j)}{i!} \bmod (x-n)\)。

直接在线段树上做分治取模就是 \(\Theta(n \log^2 n)\) 的啦。

看起来这篇博客有点短,但是感觉这个做法很酷!!!

标签:前缀,组合,sum,很酷,做法,Theta,prod,log
From: https://www.cnblogs.com/zkyJuruo/p/16995141.html

相关文章

  • json提取器和beanshell处理器组合,将提取的所有id以数组返回
    1.添加json提取器2.添加beanshell处理器,并编写脚本Stringstr1=vars.get("buildid_ALL");log.info(str1);Listlist=Arrays.asList(str1.split(","));log.info(......
  • 正则提取器和beanshell处理器组合,将提取的所有id拼接成字符串
    1.添加正则表达式,提取所有id值2.添加beanshell处理器将所有的id值拼接成字符串方法一:intN=Integer.parseInt(vars.get("build_matchNr"));log.info(N.toString())......
  • 795前缀和,线段树,树状数组
    题目描述输入一个长度为\(n\)的整数序列。接下来再输入\(m\)个询问,每个询问输入一对\(l,r\)。对于每个询问,输出原序列中从第\(l\)个数到第\(r\)个数的和。输......
  • 组合杂题选讲 #7
    题目描述题意:每次抽卡时会从\(n\)种卡里随机获得一种,那么期望上抽到全部\(n\)种卡需要抽多少次?提示:随机试验中某个变量的数学期望(简称“期望”)是指该变量所有可能的......
  • C++数学与算法系列之排列和组合
    1.前言本文将聊聊排列和组合,排列组合是组合学最基本的概念,在程序运用中也至关重要。排列问题:指从给定个数的元素中取出指定个数的元素进行排序。组合问题:指从给定个......
  • 前缀树(Tire)—Python
    核心思想空间换时间,是一种用于快速减速的多叉树结构,利用字符串的公共前缀来降低时间优缺点:优点:查询效率高,减少字符比较缺点:内存消耗较大每次都会从头向下一直到字符串......
  • 【LeeCode】17. 电话号码的字母组合
    【题目描述】给定一个仅包含数字 ​​2-9​​ 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对......
  • 组合杂题选讲 #6
    题目描述题意:请证明,平面上不存在\(4\)个点,使得任意两个点之间的距离均为奇整数。提示:这里所说的距离是指欧几里得距离,即点\((x_1,y_1)\)和\((x2,y_2)\)之间的距离......
  • 组合杂题选讲 #5
    题目描述题意:平面上有红色点和蓝色点各\(n\)个,且这\(2n\)个点没有三个点共线。我们称一种红蓝点之间的配对方案合法,是指在每对点之间用线段连接后,得到的\(n\)条线段......
  • 组合杂题选讲 #4
    问题描述题意:已知有一个\(n\)点的无向图\(G\)不包含三元环,求\(G\)边数的最大值。提示:设\(G=(V,E)\)是一个无向图。我们称\(G\)包含三元环是指存在三个点\(a,b......