HDU - 1028——母函数入门
【题目描述】
“Well, it seems the first problem is too easy. I will let you know how foolish you are later.” feng5166 says.
“The second problem is, given an positive integer N, we define an equation like this:
N=a[1]+a[2]+a[3]+…+a[m];
a[i]>0,1<=m<=N;
My question is how many different equations you can find for a given N.
For example, assume N is 4, we can find:
4 = 4;
4 = 3 + 1;
4 = 2 + 2;
4 = 2 + 1 + 1;
4 = 1 + 1 + 1 + 1;
so the result is 5 when N is 4. Note that “4 = 3 + 1” and “4 = 1 + 3” is the same in this problem. Now, you do it!”
Input
The input contains several test cases. Each test case contains a positive integer N(1<=N<=120) which is mentioned above. The input is terminated by the end of file.
Output
For each test case, you have to output a line contains an integer P which indicate the different equations you have found.
Sample Input
4
10
20
Sample Output
5
42
627
【题目分析】
刚开始看感觉像是一个递推,可是推半天没找到什么明显的关系。知道是要用到组合数学里面母函数的知识后就去学习了一下母函数,还是挺好理解的,关键在于怎么进行灵活的运用。
我们在进行组合的时候多进行的是加法,而幂函数乘积就是系数之和的性质可以帮助我们进行组合的分析,而且这种组合是他们将相同系数合并后的,可以直接得到我们的结果。
关于母函数的学习,可以看看其他大佬的文章,总结起来就两句话
1.“把组合问题的加法法则和幂级数的乘幂对应起来”2.“母函数的思想很简单 — 就是把离散数列和幂级数一 一对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来确定离散数列的构造. “
在这个问题里面,我们想要选出能凑出这个数字的和的所有的数字,为了防止重复,我们从小往大选,选出来到最后的结果就是答案
其实我们进行的是模拟幂级数的乘法运算。
这里为了优化复杂度,我用i0和i1进行翻滚
【AC代码】
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<climits>
#include<queue>
#include<vector>
#include<set>
#include<map>
using namespace std;typedef long long ll;
const int MAXN=125;
int n;
int ans[2][MAXN<<2];
int i0,i1;int main()
{while(~scanf("%d",&n)){memset(ans,0,sizeof(ans));i0=0; i1=1;for(int i=0;i<=n;i++){ans[i0][i]=1;}for(int i=2;i<=n;i++){for(int j=0;j<=n;j++){for(int k=0;k+j<=n;k+=i){ans[i1][j+k]+=ans[i0][j];}}swap(i0,i1);for(int i=0;i<=n;i++){ans[i1][i]=0;}}printf("%d\n",ans[i0][n]);}return 0;
}
HDU - 1028——母函数入门相关推荐
- hdu 1028 母函数入门题
点击打开链接 题意:给出n n<=120,拆分n的方法数? (1+x^2+x^3+..x^n) *(1+x^2+x^4+x^6+...) *(1+x^3+x^6+...) 第i个表达式代表了数 ...
- hdu 1028 母函数 模版题
母函数详解 http://www.wutianqi.com/?p=596 第二种: 求用1分.2分.3分的邮票贴出不同数值的方案数: 大家把这种情况和第一种比较有何区别?第一种每种是一个,而这里每种是 ...
- hdu 1028 母函数
这道题比较简单,可以说是母函数的模板题,直接套用模板就可以解了. #include <cstdio> #include <iostream>using namespace st ...
- dp 母函数 入门 + 模板
dp 母函数 入门 + 模板 在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息.使用母函数解决问题的方法称为 ...
- 生成函数(母函数)入门详解
感谢大佬! 感谢大佬 本文章从以上两位大佬的博客参考而来!再次感谢! 母函数,又称生成函数,是ACM竞赛中经常使用的一种解题算法,常用来解决组合方面的题目. 在数学中,某个序列的母函数(Generat ...
- hdu 1028 Ignatius and the Princess III 母函数入门
传送门 文章目录 题意: 思路: 题意: 给你一个数nnn,问你有多少种方案用1−n1-n1−n的数能组成nnn,数的使用次数无限制. n≤120n\le120n≤120 思路: 考虑构造母函数. 对 ...
- hdu 1398 Square Coins/hdu 1028 Ignatius and the Princess III
两道母函数的模板题: http://acm.hdu.edu.cn/showproblem.php?pid=1398 View Code #include<iostream>#include ...
- 母函数 入门 + 模板
在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息.使用母函数解决问题的方法称为母函数方法. 母函数可分为很多 ...
- [恢]hdu 1028
2011-12-16 08:28:00 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1028 题意:一个整数n,可以表示为多少种和的形式. mark:dp ...
最新文章
- h5实现手机端等级进度条
- oracle 创建带参数的视图
- STP生成树连载:制服网络广播风暴(1)
- php一句话图片木马过滤_php一句话图片木马怎么解析
- jQueryMobile引入文件后样式无法正常显示
- Dump文件:线程dump和堆dump
- RAC的搭建(一)--安装环境准备
- 【机器学习】传统目标检测算法总结
- Organizational Data assignment block里value help的determine逻辑
- Linux usb bus日志如何打开,从linux usb bus节点来认识usb linux usb认识
- 目标检测——使用loss发现噪声数据
- java 中的随机数
- 几个开源项目实体层实现方式比较
- MySQL最新版MySQL8.0百度云下载
- php聊天室简单实现
- stata基本操作(一)
- 重装系统找不到固态_SSD固态硬盘才装上确找不到盘怎么办 --好文
- 淘宝商品详情(新版)
- 学习大数据需要具备什么基础么?
- 图的遍历(深度优先遍历DFS,广度优先遍历BFS)以及C语言的实现
热门文章
- OSS网页上传和断点续传(OSS配置篇)
- java IO(一):File类
- Linux 常用命令二 pwd cd
- ScanTailor-ScanTailor 强大的多方位的满足处理扫描图片的需求
- UVALive 6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)
- 取消XP和2000专业版的IIS的用户数量限制
- java response 获得code_Java教程分享使用HttpClient抓取页面内容
- android签到功能模块,基于android的课堂签到系统.doc
- mysql锁表问题的解决方法_MYSQL锁表问题的解决方法
- 矩阵指数 matlab,矩阵指数
- MATLAB Simulink Example
- MathWorks 中国