生成函数

news/发布时间2024/5/14 9:41:55

有空就写,随机更新
P4389 付公主的背包
由生成函数含义易得答案为

\[\prod_{i=1}^{n}{\frac{1}{1-x^{v_i}}} \]

正常算需要 \(O(nm\log m)\) 考虑优化
乘法不好算,通过求 \(\ln\) 改为加法,设

\[A(x)=\prod_{i=1}^{n}{\frac{1}{1-x^{v_i}}} \]

显然有

\[\begin{split} A(x)&=exp(\ln(\ A(x)\ ))\\ &=exp(\sum_{i=1}^{n}{\ln(\frac{1}{1-x^{v_i}}})) \end{split} \]

求和非常好做,接下来只需要快速求出\(\frac{1}{1-x^{v_i}}\)就行了,我们有:

\[\]

证明:
设:

\[F(x)=\frac{1}{1-x^v}\\ \ln F(x)=\ln(\frac{1}{1-x^v})=-\ln (1-x^v) \]

求导(链式法则)

\[(\ln F(x) )^{\prime}=(-\ln (1-x^v) )^{\prime}=-\frac{(1-x^v)^{\prime}}{(1-x^v)} \]

因为 \((1-x^v)^{\prime}=-vx^{v-1}\) 所以

\[(\ln F(x) )^{\prime}=\frac{vx^{v-1}}{(1-x^v)} \]

把下面的 \(\frac{1}{1-x^v}\) 带成 \(\sum_{i=0}^{\infty}{x^{i\times v}}\)

\[(\ln F(x) )^{\prime}=vx^{v-1}\sum_{i=0}^{\infty}{x^{i\times v}}=v\sum_{i=0}^{\infty}{x^{i\times v+v-1}}=v\sum_{i=0}^{\infty}{x^{v\times(i+1)-1}} \]

积分回去

\[\ln F(x)=v \sum _ {i=0}^{\infty}{\frac{x^{v\times(i+1)}}{i\times v+v}} \]

约分

\[\ln F(x)=\sum _ {i=0}^{\infty}{\frac{x^{v\times(i+1)}}{i+1}} \]

更改枚举指标

\[\ln F(x)=\sum_ {i=1} ^{\infty} {\frac{x^{v \ i}}{i}} \]

带回原式算答案即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/20410086.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Windows 安装 chromedriver 和 Python 调试

下载 chromedriver 从官方网站上下载 chromedriver 的版本,这个版本需要和你 Chrome 的版本对应上。 下载的地址为:ChromeDriver - WebDriver for Chrome - Downloads这个地方,将会打开一个新的浏览器界面,Chrome for Testing availability 在这个新的浏览器界面中,我们能…

Chromedriver 在 Python 中查看源代码的方法

Python 中可以属性来查看需要爬取的网站的源代码。 对应具体的是:chrome.page_source需要注意的是首先需要导入包 from selenium.webdriver import Chrome 然后进行初始化:chrome = Chrome(service=Service(r"C:\Users\yhu\Downloads\chromedriver-win64\chromedriver-w…

Maven03-Maven使用入门

1、创建Maven项目的目录结构为maven-project01项目创建目录结构。首先创建一个名为maven-project01的文件夹,并在其下创建如下目录。2、编写pom.xmlMaven项目的核心是pom.xml,就像Make的Makefile,Ant的build.xml一样。 POM(Project Object Model,项目对象模型)定义了项目的…

Maven03-Maven入门使用

1、创建Maven项目的目录结构为maven-project01项目创建目录结构。首先创建一个名为maven-project01的文件夹,并在其下创建如下目录。2、编写pom.xmlMaven项目的核心是pom.xml,就像Make的Makefile,Ant的build.xml一样。 POM(Project Object Model,项目对象模型)定义了项目的…

算法--二叉树展开

Leetcode 114: 给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历顺序相同。示例 1:输入:root = [1,2,5,3,4,null,6] 输…

软工作业2:个人项目

软工作业2:论文查重 github仓库地址:https://github.com/Chynsh/Chynsh/tree/main/3121005252/Paperchecker 作业要求这个作业属于哪个课程 软件工程这个作业要求在哪里 个人项目这个作业的目标 设计一个论文查重算法,在答案文件中输出其重复率。PSP表记录PSP2.1 Personal S…