首页 > 其他分享 >生成函数(GF)

生成函数(GF)

时间:2024-08-23 09:03:53浏览次数:5  
标签:ch 限制 函数 形式 生成 GF 不太好 frac

学了一点皮毛,暂时先写一篇博客寄存一下

定义:比较抽象的理解一下就是把一个限制条件的方案数转化成一个次冥函数的形式,再把一个次幂函数转化成某种限制条件下的方案数.......
大概是这么一个形式:

\[f(x)=a_{0}x^0+a_{1}x^1+a_{2}x^2+····· \]

还是举个例子吧:
你现在要离校回家了,但教练给你提了两个要求:\(1.回家的前3天有且仅有有一天学文化课。2.回家的奇数天有且仅有一天学奥赛\),你现在到家了,你的mother又提了一个要求\(回家后的3的倍数天(包括第0天)有且仅有一天去和她去买东西\),但这些在强迫症的你的眼里,你必须要求它们的日期之和为n,求你所有合法的方案的数数量。
啊~,这个东西显然是不太好做的,所以考虑引用我们刚刚提出的那个概念——生成函数!
我们设函数\(f_{1}\)表示第一个限制,则有:

\[f_{1}(x)=x+x^2+x^3 \]

同理我们可以把另外两个限制条件也通过函数的形式表现出来,即为:

\[f_{1}(x)=x+x^2+x^3 \]

\[f_{2}(x)=x+x^3+x^5+x^7+····· \]

\[f_{3}(x)=1+x^3+x^6+x^9+····· \]

显然的是要同时满足这几个限制条件就要把这几个函数乘起来,但这显然是不太好搞得,所以考虑把这几个函数化成封闭形式,则有:

\[f_{1}(x)=\frac{x^4-x}{x-1} \]

\[f_{2}(x)=\frac{x}{1-x^2} \]

\[f_{3}(x)=\frac{1}{1-x^3} \]

\[f_{1}(x)*f_{2}(x)*f_{3}(x)=\frac{(x^4-x)*x*1}{(x-1)*(1-x^2)*(1-x^3)} \]

\[=\frac{x^2}{(1-x)*(1-x^2)} \]

然后把这个式子化成多项式的形式即可,其中第\(n\)项的系数即为答案,但我举的这个例子好像不太好化,那就先不化了吧,这里提供一个方便转化的公式:

\[\sum_{n=0}^{\infty}C_{n+m}^{n}x^n=\frac{1}{(1-x)^{m+1}} \]

其中第\(n\)项的系数就是\(C_{n+m}^{n}\),知道\(m\)后即可求出。
最后看一道能划开的例题吧:
luogu P10780 BZOJ3028 食物
具体过程就不说了,和我上面说的基本一致,贴个代码就行了

#include<iostream>
long long n,p=10007;
signed main(){
	char ch=getchar_unlocked();
	while(ch>='0'&&ch<='9'){
		n=(n*10+(ch^48))%p;
		ch=getchar_unlocked();
	}
	std::cout<<(n+2)*(n+1)*n*1668%p;
	return 0;
}

事实上推出来之后这代码似乎可有可无,润润润!

标签:ch,限制,函数,形式,生成,GF,不太好,frac
From: https://www.cnblogs.com/houburzyx/p/18375204

相关文章

  • 虚函数返回自己类型指针或引用,重写时返回类型可以不一样
    C++#include<functional>#include<iostream>#include<vector>#include<memory>#include<set>#include<map>#include<string>usingnamespacestd;namespace{/*C++类不能继承它自己*/classAnimal/*:public......
  • 神经网络中常用的函数
    在神经网络中,有许多常用的函数,每种函数在不同的场景下有其独特的应用。以下是一些常见的神经网络函数及其应用场景:###1.**激活函数(ActivationFunctions)**激活函数是神经网络中的关键组件,它们决定了一个神经元是否应该被激活。常见的激活函数包括:-**ReLU(RectifiedLinearUni......
  • 论文开题报告不再难?用AI快速生成论文开题报告
    在论文写作的过程中,论文的开题报告的编写起着至关重要的作用。它不仅为后续研究铺设了道路,更在很大程度上决定了论文的广度与深度。撰写一份出色的开题报告并非易事,这常常成为不少大学生面临的挑战。今天,我将向大家推荐一款前沿的AI写作助手,它能在短短三分钟生成高质量的论文......
  • H7-TOOL脱机烧录的UID加密操作方法,支持一键生成目标板C代码,方便大家轻松操作(2024-08-2
    UID加密使用比较方便,对应的C代码模板已经做好,使用TOOL上位机生成后,直接复制粘贴到自己的工程即可使用。返回1表示解密成功,返回0表示失败。【UID加密原理】1、烧录器在烧录芯片时,按照指定的算法将UID码编码为一个加密数据,并写入FLASH指定区域。2、用户的程序必须增加一段UID校......
  • C/C++语言基础--指针三大专题详解3,完结篇(包括指针做函数参数,函数指针,回调函数,左右法
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言指针是C/C++的灵魂,和内存地址相关联,运行的时候速度快,但是同时也有很多细节和规范要注意的,毕竟内存泄漏是很恐怖的指针打算分三篇文章进行讲解,本专题是三,完结篇,介绍了指针做函数参数,函数指针,回调函数,左右法则解决复......
  • Python系列(6)- Python 函数、Python 装饰器
    函数在数学上的定义:给定一个非空的数集A,对A施加对应法则f,记作f(A),得到另一数集B,也就是B=f(A),那么这个关系式就叫函数关系式,简称函数。简而言之,两个变量x和y,如果每给定x的一个值,y都有一个确定的值与其对应,那么我们就说y是x的函数。其中,x叫做自变量,y叫做因变量......
  • set 的详细用法(set 排序、set 的遍历、set 的多种倒序遍历方法、set 的基本成员函数)
    目录一:set的简介二:set的使用(要包含头文件)1.set的定义2.set的基本成员函数3.set的遍历(1)迭代器iterator(即升序输出)(2)倒序输出1.rbegin()和rend()2.当然,也可以逆向思维一下。​^^3.用greater实现降序排列三:应用基本成员函数的代码【总结】有上述代码可以看出,插......
  • 【生日视频制作】公园火车飞艇热气球AE模板修改文字软件生成器教程特效素材【AE模板】
    公园火车飞艇热气球生日视频制作教程AE模板修改文字特效软件生成器素材怎么如何做的【生日视频制作】公园火车飞艇热气球AE模板修改文字软件生成器教程特效素材【AE模板】生日视频制作步骤:安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染出视频......
  • 【C#】.NET报错:所生成项目的处理器框架“MSIL”与引用“xxx”的处理器架构“AMD64”不
    一、现象所生成项目的处理器架构“MSIL”与引用“System.Data.SQLite,Version=1.0.60.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139,processorArchitecture=x86”的处理器架构“AMD64”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的......
  • Python 实现批量数字二维码生成器
    Python实现批量数字二维码生成器创建时间:2024-08-09一、背景手动逐个生成特定格式和内容的二维码是一项繁琐且耗时的任务。虽然有写二维码工具也可以制作,但是往往有一些限制,为了能够高效、批量生成自定义二维码的需求,开发了这个基于Python的数字二维码生成器应用程序。在实......