140804暑期培训.txt

1、母函数

母函数,顾名思义,就是母亲,那就说明,在这个函数里面还有儿子,即子函数。说白了,就是子函数可以看作是母函数的一个子集。

而如何把这些子函数用一个母函数来表示呢?即所谓的通项公式。

通俗理解为:母函数就是一个多项式前面的系数的一个整体的集合,而子函数就是这个多项式每一项前面的系数。

母函数有普通型的,也有指数型的。而我们通常在做题当中碰到的大多是普通型的,指数型的较少,主要用来求解多重排列的题型

普通型的可以用在求解组合以及整数拆分的题型中。

例如,对于有n种物品,如果第i个物品有ki个,我们可以列式n个项相乘 (x^0+x^1+...x^k1)*(x^0+x^1+...x^k2)*...*(x^0+x^1+...x^kn)   ,每一项表示对于第i件物品,可以有(x^0+x^1+...x^ki)中取法,【注意系数都为1,因为同种物品去i件,它的取法是1】多项相乘:因为   取m件物品这件事实要分为对n种物品各取分别取1次【0~ki个】,  是组合计数的乘法原理, x^m 的系数是组合成m件物品的所有方案数。

母函数的框架基本一样,

如hdu1028,

for(i=2;i<=n;i++)

{

for(j=0;j<=n;j++)

for(k=0;k+j<=n;k+=i)//关键

b[k+j]+=a[j];

for(j=0;j<=n;j++)

{

a[j]=b[j];

b[j]=0;

}

}

注:根据题意,仔细分析,建立关系。

140804暑期培训.txt,布布扣,bubuko.com

时间: 2024-08-09 22:02:38

140804暑期培训.txt的相关文章

140801暑期培训.txt

1.N!的求法(大菲波数类似) #include<stdio.h> #include<string.h> int s[110000]; int main() { int n; int i,j,k,l,m; while(scanf("%d",&n)!=EOF) { memset(s,0,sizeof(s)); l=1;      //控制位数 s[0]=1; for(i=1;i<=n;i++) { k=0;    //控制进位 for(j=0;j&l

140729暑期培训.txt

1.对于题目给出的已知数据是一个开始时间和一个结束时间的题 第一反应会是将开始时间进行排序 但这样做比较麻烦 做题应该多换几个角度和思维 将这类题按结束时间进行排序会简单的多 2.结构体 struct move           //struct是结构体函数 { int a;       //结构体成员 double b; char c; }num[100];       //一个结构体数组可以包含多个结构体成员,而且结构体成员的类型可以不同 int main() { for(i=0;i<n;

140819暑期培训.txt

1.对于判断是否可以组成三角形 两边之和大于第三边&&两边之差小于第三边     (需要同时满足) 2. 1>r*r<x; 2>r<sqrt(x*1.0); 这两种形式,第二种要比第一种用的时间少.140819暑期培训.txt,布布扣,bubuko.com

140808暑期培训.txt

1.绝对值函数 abs()仅对整型求绝对值 对浮点数求绝对值使用fabs()函数. 2.连接字符串函数-----strcat(a,b) 将字符串b连接在字符串a后面 注意:字符串a的大小要足以容纳a+b 3. void f(int a) { int i,j,k; for(i=1;i*i<a;i++) for(j=i;j*j<a;j++) for(k=j;k*k<a;k++) if(i*i+j*j+k*k==a) { printf("%d %d %d\n",i,j,k)

140805暑期培训.txt

1.scanf("%s",s); //for(i=0;i<11;i++) //scanf("%d",s[i]); 输入数字的时候,每个数字之间必须隔一个空格电脑才能识别和分辨 若输入连续的11个数字,计算机会认为他是一个数字 只有1 8 3 3 6 8 6 3 0 9 9,计算机才能认为这是11个 所以用字符串 2.若题目给出了一个数学公式,让你求第 N项的值 对于一道给出了运算公式的数学,凡是没有优化的话,超时超内存等等是避免不了的了. 这题很显然是一个找规

140726暑期培训.txt

1.   输入多组数据的时候 while(scanf("%s",s)!=EOF) while(gets(s)!=NULL)     用gets和scanf不一样,要注意 2.   输入字符串的时候 scanf("%s",s); scanf遇到空格会自动停止输入 scanf输入完字符串之后要记得判断是否加getchar();以吸收换行符 gets(s); gets可以输入空格,结束的时候用'\n',对于其不吸收 3.   输出字符串的时候 puts(s);      

140724暑期培训.txt

1.同余定理 (a+b)%c==(a%c+b%c)%c (a*b)%c==[(a%c)*(b%c)]%c 因为有的数在int范围内,但是两个的乘积却超过了int范围,这样可以避免运算过程中超过int范围 2.gcd函数(即最大公约数) int gcd(int a,int b) { return !b?a:gcd(b,a%b); }140724暑期培训.txt

140802暑期培训.txt

1.pow函数 #include<math.h> pow(x,y)用来计算以x 为底的 y 次方值,然后将结果返回. 注意:pow函数返回值为double型 printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) ); (他也可以计算小数的小数次方) 2.动态规划: 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移. 一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划. (下

140813暑期培训.txt

1. int a=4;      //a为普通的整型变量 int &b=a;  //b是a的引用变量 这里说明b变量是变量a的引用,b也等于4,之后这两个变量同步改变. 当a改变时b也同步改变,同样,当b改变时a也同步改变. 引用常用于函数形参中,采用引用型形参时,在函数调用时将形参的改变回传给实参,例如,有如下函数(其中的形参均为引用型形参): void swap(int &x,int &y) //形参前的"&"符号不是指针运算符 {  int tmp