ACM课件(lecture08)母函数.ppt

上传人:小飞机 文档编号:6501233 上传时间:2023-11-07 格式:PPT 页数:30 大小:322.50KB
返回 下载 相关 举报
ACM课件(lecture08)母函数.ppt_第1页
第1页 / 共30页
ACM课件(lecture08)母函数.ppt_第2页
第2页 / 共30页
ACM课件(lecture08)母函数.ppt_第3页
第3页 / 共30页
ACM课件(lecture08)母函数.ppt_第4页
第4页 / 共30页
ACM课件(lecture08)母函数.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《ACM课件(lecture08)母函数.ppt》由会员分享,可在线阅读,更多相关《ACM课件(lecture08)母函数.ppt(30页珍藏版)》请在三一办公上搜索。

1、ACM程序设计,杭州电子科技大学 刘春英,2023/11/7,2,上一周,,你 了吗?,练习,2023/11/7,3,每周一星(7):,07054202,2023/11/7,4,第八讲,母函数及其应用(Generation function),2023/11/7,5,从递推关系说起,2023/11/7,6,研究以下多项式乘法:,可以看出:x2项的系数a1a2+a1a3+.+an-1an中所有的项包括n个元素a1,a2,an中取两个组合的全体;同理:x3项系数包含了从n个元素a1,a2,an中取3个元素组合的全体;以此类推。,(81),2023/11/7,7,若令a1=a2=an=1,在(8-1

2、)式中a1a2+a1a3+.+an-1an项系数中每一个组合有1个贡献,其他各项以此类推。故有:,(82),特例:,2023/11/7,8,母函数定义:,对于序列a0,a1,a2,构造一函数:,称函数G(x)是序列a0,a1,a2,的母函数,2023/11/7,9,For example:,(1+x)n是序列C(n,0),C(n,1),.,C(n,n)的母函数。如若已知序列a0,a1,a2,则对应的母函数G(x)便可根据定义给出。反之,如若已经求得序列的母函数G(x),则该序列也随之确定。序列a0,a1,a2,可记为an。,2023/11/7,10,实 例 分 析,2023/11/7,11,例

3、1:若有1克、2克、3克、4克的砝码各一 枚,能称出哪几种重量?各有几种可能方案?,如何解决这个问题呢?考虑构造母函数。如果用x的指数表示称出的重量,则:1个1克的砝码可以用函数1+x表示,1个2克的砝码可以用函数1+x2表示,1个3克的砝码可以用函数1+x3表示,1个4克的砝码可以用函数1+x4表示,,2023/11/7,12,几种砝码的组合可以称重的情况,可以用以上几个函数的乘积表示:,(1+x)(1+x2)(1+x3)(1+x4)=(1+x+x2+x3)(1+x3+x4+x7)=1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10,从上面的函数知道:可称出从1克到10

4、克,系数便是方案数。例如右端有2x5 项,即称出5克的方案有2:5=3+2=4+1;同样,6=1+2+3=4+2;10=1+2+3+4。故称出6克的方案有2,称出10克的方案有1,2023/11/7,13,例2:求用1分、2分、3分的邮票贴出不同数值的方案数,因邮票允许重复,故母函数为:,以展开后的x4为例,其系数为4,即4拆分成1、2、3之和的拆分数为4;即:4=1+1+1+1=1+1+2=1+3=2+2,2023/11/7,14,概念:整数拆分,所谓整数拆分即把整数分解成若干整数的和(相当于把n个无区别的球放到n个无标志的盒子,盒子允许空,也允许放多于一个球)。整数拆分成若干整数的和,办法

5、不一,不同拆分法的总数叫做拆分数。,2023/11/7,15,练习(写出以下问题的母函数):,例3:若有1克砝码3枚、2克砝码4枚、4克砝码2枚,问能称出哪几种重量?各有几种方案?,例4:整数n拆分成1,2,3,m的和,求其母函数。,例5:如若上例中m至少出现一次,其母函数又如何?,2023/11/7,16,如何编写程序实现母函数的应用呢?,核心问题,关键:对多项式展开,2023/11/7,17,以整数拆分为例:,观察以下的母函数:,首先思考:如果让你手工计算,你是怎样处理的?,实际编程:让计算机按照自己的思路计算即可,/Author by lwg#include using namespac

6、e std;const int lmax=10000;int c1lmax+1,c2lmax+1;int main()int n,i,j,k;while(cinn)for(i=0;i=n;i+)c1i=0;c2i=0;for(i=0;i=n;i+)c1i=1;for(i=2;i=n;i+)for(j=0;j=n;j+)for(k=0;k+j=n;k+=i)c2j+k+=c1j;for(j=0;j=n;j+)c1j=c2j;c2j=0;coutc1nendl;return 0;,2023/11/7,19,主打例题:HDOJ_1398 Square Coins,Sample Input210300

7、 Sample Output1427,2023/11/7,20,算法分析:,典型的利用母函数可解的题目。G(x)=(1+x+x2+x3+x4+)(1+x4+x8+x12+)(1+x9+x18+x27+),2023/11/7,21,/HDOJ_1398 Square Coins#include using namespace std;const int lmax=300;int c1lmax+1,c2lmax+1;int main(void)int n,i,j,k;while(cinn,2023/11/7,22,/HDOJ_1398 Square Coins/变化一点点,灵活多多多int mai

8、n(void)int n,i,j,k;int elem17=1,4,9,16,25,36,169,196,225,256,289while(cinn,2023/11/7,23,思考(1):,HDOJ_1028Ignatius and the Princess III,2023/11/7,24,思考(2):,HDOJ_1085Holding Bin-Laden Captive!,2023/11/7,25,思考(3):,HDOJ_1171Big Eventin HDU,2023/11/7,26,思考(4):,HDOJ_1709The Balance,Any questions?,2023/11/7,28,附:相关作业(hdoj):,2008ACM ProgrammingExercise(9)_母函数,1,2,3,Go!一定要练习,1028、1709、1085、1171、1398、2069、2152其它相关题目(比如求邮票、硬币之类的组合数、整数的不同拆分数等),2023/11/7,29,下一讲:,搜索入门,2023/11/7,30,Welcome to HDOJ,Thank You,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号