母函数又叫生成函数,原是数学上的一个名词,是组合数学中的一个重要理论。

生成函数是说,构造这么一个多项式函数g(x)。使得x的n次方系数为f(n)。



对于母函数,看到最多的是这样两句话:



1.“把组合问题的加法法则和幂级数的乘幂相应起来。”

2.“把离散数列和幂级数一 一相应起来,把离散数列间的相互结合关系相应成为幂级数间的运算关系。最后由幂级数形式来确定离散数列的构造。 “

 母函数能够解决一些问题 如 砝码问题,整数划分,等等

砝码问题:

有1克、2克、3克、4克砝码各一枚。问能称出哪几种重量?每种重量各有几种方案?



以下是用母函数解决问题的思路:



首先。我们用X表示砝码。X的指数表示砝码的重量。那么,假设用函数表示每一个砝码能够称的重量,



1个1克的砝码能够用函数X^0 + X^1表示。



1个2克的砝码能够用函数X^0 + X^2表示,



依次类推。

假设我们把上面2个多项式相乘。能够得到X^0 + X^1 + X^2 + X^3。继续把它与X^0 + X^3相乘,得到X^0 + X^1 + X^2 + 2*X^3 + X^4 + X^5 + X^6。

接着把它与X^0+X^4相乘,最后得到X^0 + X^1 + X^2 + 2*X^3 + 2*X^4 + 2*X^5 + 2*X^6 + 2*X^7 + X^8 + X^9 + X^10。

因为X的指数表示的是重量,所以。在相乘时,依据幂的运算法则(同底幂相乘,指数相加),得到的结果正是全部的方案。

并且,每一个X前面的系数代表它有几种方案。



须要注意的是,假设有2个1克的砝码,应该用X^0 + X^1 + X^2表示,而不是X^0 + 2*X^1。

整数划分是个非常经典的问题,划分规则就不再细述,直接说思路。与上面的问题相比,每种砝码的个数不再是1个。而是无限个。

于是,



1克的砝码能够用X^0 + X^1 + X^2 + X^3 ……表示,



2克的砝码能够用X^0 + X^2 + X^4 + X^6……表示。



3克的砝码能够用X^0 + X^3 + X^6 + X^9……表示,



依次类推。

相乘后求出X^n的系数,就是结果。

以后在ACM上难免会遇到这种问题。我们仅仅需模拟两个多项式相乘就可以。

做题思路就是开两个数组。一个数组是ans[    ]。我们用来保存当前得到的多项式的各项系数,temp[   ] 则是暂时的一个数组。用来保存每次计算的暂时结果。计算完后,赋值给ans[   ] 。然后清零。进行下一次计算;

计算的时候开3层for  循环,最外层,记录它正在与第几个多项式相乘。第二层,表示c1中的每一项。第三层表示后面被乘多项式中的每一项。

练习题目有HDU 1085     HDU1398     HDU1028   HDU1171

hdu 1028  http://blog.csdn.net/jk13171217/article/details/38303725

hdu 1085 http://blog.csdn.net/jk13171217/article/details/38303995

hdu 1398 http://blog.csdn.net/jk13171217/article/details/38303933

hdu 1171  http://blog.csdn.net/jk13171217/article/details/38303111 (具体介绍1171题)

acm之路--母函数 by小宇的更多相关文章

  1. nyist 606 ACM之路

    http://acm.nyist.net/JudgeOnline/problem.php?pid=606 ACM之路 时间限制:1000 ms | 内存限制:65535 KB 描述 转眼间,12级新生 ...

  2. ACM之路(转载)

    转载自:https://www.cnblogs.com/tianjintou/p/4139416.html 要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来. 适合自己的才是好的,有的人 ...

  3. 另一个ACM之路建议

    ACM联系建议 一位高手对我的建议: 一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划 ...

  4. ACM之路

    从10月我刚接触到acm竞赛,到现在2017年2.20接近4个月的时间,我才刷到200道题.在刷题的过程中,我曾遇到困难,我也从一次性就a过,但是有时候会想到放弃.不过既然已经踏进来一只脚,还不如就好 ...

  5. ACM之路——上车了

    校赛坚持到底,拿到了银牌:第一批进入ACM队集训,期末考试之前仍然代码不断,甚至感觉对不起大学第一次的期末考试,五天复习高数,两天复习英语,看到英语成绩是胸口突然好痛,好难受……就为了成为ACM正式队 ...

  6. 回归——继续我的ACM之路!!

    回归啦~~18年省赛结束后第一次参赛拿到了省级银牌对我是一个很大的鼓励,这是所感兴趣的事,我能做的不错,也就不愧于心了. 修整了两周多左右,建了建模,和阔爱的对象狂了两周,终于要静下来了,静下来一想, ...

  7. 完成了C++作业,本博客现在开始全面记录acm学习历程,真正的acm之路,现在开始

    以下以目前遇到题目开始记录,按发布时间排序 ACM之递推递归 ACM之数学题 拓扑排序 ACM之最短路径做题笔记与记录 STL学习笔记不(定期更新) 八皇后问题解题报告

  8. 剪辑的楼天城的ACM之路

    楼天城楼教主的acm心路历程(剪辑) 利用假期空闲之时,将这几年GCJ,ACM,TopCoder 参加的一些重要比赛作个回顾.昨天是GCJ2006 的回忆,今天时间上更早一些吧,我现在还清晰记得3 年 ...

  9. ACM之路(12)—— KMP & 扩展KMP & Manacher

    最近做完了kuangbin的一套关于kmp的题目(除了一道字典树的不会,因为还没学字典树所以先放放),做个总结.(kuangbin题目的链接:http://acm.hust.edu.cn/vjudge ...

随机推荐

  1. api接口思路介绍

    现在很流行api了,但各种api做法不一样,下面我整理了一些自己的想法,也是看了各大门户网站开放的api应用想到的,与大家分享分享,高手跳过.   API(Application Programmin ...

  2. ZCMU Problem G: 素数对(数论,素数筛法)

    #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #inc ...

  3. CSU七月校赛B

    #include <iostream> #include<cstdio> #include<algorithm> #include<cstring> # ...

  4. HDU 多校1.8

  5. golang笔记:cookie

    在同一个问题上栽了两次,以后碰到cookie出问题多半都是因为这个. Request.Cookie(name)取Cookie的时候,返回值只有name和value cookie.go cookies ...

  6. DP(悬线法)+二维前缀和【p2706】巧克力

    Background 王7的生日到了,他的弟弟准备送他巧克力. Description 有一个被分成n*m格的巧克力盒,在(i,j)的位置上有a[i,j]块巧克力.就在送出它的前一天晚上,有老鼠夜袭巧 ...

  7. 二分图匹配【p2147】课程

    Description n个学生去p个课堂,每一个学生都有自己的课堂,并且每个学生只能去一个课堂,题目要求能够安排每一个课堂都有人吗? Input 第一行是测试数据的个数, 每组测试数据的开始分别是p ...

  8. Java异常处理机制及两种异常的区别

    java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字.   try 关键字后紧跟一个花括号括起来的代码块,简称try块.同理:下面的也被称为相应的块. ...

  9. 深入理解Session和Cookie机制

    具体来说cookie机制采用的是在客户端保持状态的方案.它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持.cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力. 而 ...

  10. 通过python的logging模块输出日志文件

    import logging import sys #获取logger实例 logger = logging.getLogger("baseSpider") # 括号后面填运行的文 ...