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

生成函数是说,构造这么一个多项式函数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. (九)expect批量公钥推送

    (1)expect实现ssh非交互登录 注意:注释不能出现这脚本里面 spawn表示开启一个会话 \r:表示回车,exp_continue :表示没有出现这样,继续往下执行 interact :停留在 ...

  2. php 单文件上传

    php 单文件上传 通过 PHP,可以把文件上传到服务器. 创建一个文件上传表单 允许用户从表单上传文件是非常有用的. 请看下面这个供上传文件的 HTML 表单: Filename: 请留意如下有关此 ...

  3. 分享HTTP Status 404(The requested resource is not available)的几种解决方案解决方法

    下面是直接copy的,如果有什么疑问or补充,请不吝指教! 原文地址:http://www.myexception.cn/java-web/1480013.html 这个问题搞了我两天的时间,找了各种 ...

  4. 训练指南 UVA - 11383(KM算法的应用 lx+ly >=w(x,y))

    layout: post title: 训练指南 UVA - 11383(KM算法的应用 lx+ly >=w(x,y)) author: "luowentaoaa" cata ...

  5. oracle enable / disable all constraint

    beginfor i in (select constraint_name, table_name from user_constraints where table_name='') LOOPexe ...

  6. 软Raid5,LVM,3T大硬盘纠缠操作的问题

    新服务器,4块3T大硬盘,软Raid5 组建 加上LVM分区各种一通操作... 悲催的是经过4天的软raid rebuild,最终状态给我FAIL了,当看到raid的state[ State : cl ...

  7. Android的日志工具Log

    Android中的日志工具类是Log(android.util.Log),这个类提供了以下几个方法来供我们打印日志. ♦ Log.v():这个方法用于打印那些最为琐碎的,意义最小的日志信息.对应级别v ...

  8. [Atcoder Grand Contest 003] Tutorial

    Link: AGC003 传送门 A: 判断如果一个方向有,其相反方向有没有即可 #include <bits/stdc++.h> using namespace std; ]; map& ...

  9. POJ 3494 Largest Submatrix of All 1’s(最大子图形)

    [题目链接] http://poj.org/problem?id=3494 [题目大意] 在01矩阵中求最大全1子矩形 [题解] 在处理每个点的时候,继承上一个点等高度下的左右最大扩展, 计算在该层的 ...

  10. [CF983D]Arkady and Rectangles

    题意:按顺序在坐标轴上画$n$个颜色为$1\cdots n$的矩形(数字大的颜色覆盖数字小的颜色),问最后能看到多少种颜色 先离散化,然后考虑扫描线+线段树 线段树每个节点用一个set存覆盖整个区间的 ...