
母函数
ITCharge
高效率编程,慢节奏生活。
展开
-
HDU1521 排列组合【指数型母函数】
题目大意: 有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如 有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。 思路: 典型的指数型母函数。指数型母函数的一般问题为:n个元素组成的多重集,其 中a1重复了n1次,a2重复了n2次,…,ak重复了nk次。若n = n1 + n2 + … + nk,从n个元素中取r个排列,求不同的排列数。原创 2015-08-17 19:16:11 · 815 阅读 · 0 评论 -
HDU2110 Crisis of HDU【母函数】
题目大意: 公司有N种价值的资产,每种价值的资产数量已知,问能否得到总资产1/3的分割资产方法。 问:分割资产的方案数是多少(mod 10000)。 思路: 给定N种价值的资产,设每种价值Pi的数量为Mi,则总资产为sum = Σ Pi*Mi (1 <= i <= N)。 可得母函数g(x) = Π(1 + x^Pi + x^(2*Pi) + … + x^(Pi*Mi) ) (1 <= i <= N)。找到sum/3的 系数即可。原创 2015-05-15 09:34:09 · 1063 阅读 · 0 评论 -
母函数【模板】
普通母函数 1.根据题目要求得到母函数(生成函数) 2.把第一个括号的表达式的系数赋值到c1中。 3.从第二个括号开始计算每一项乘积。 4.迭代得到最终母函数结果。#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std;int c1[1100],c2[1100]原创 2015-05-07 22:02:33 · 1226 阅读 · 0 评论 -
HDU1398 Square Coins【母函数】
题目大意: Silverland居住的人们使用方币,这种硬币的价值都是平方数。硬币的价值分别为1分、4分、9分, …,最大为289(17^2)分。要得到10分钱,共有四种硬币组合 10个1分硬币、1个4分硬币和6个1分硬币、2个4分硬币和2个1分硬币,1个9分硬币和1个1分硬币。 现在给你一个数,问:得到这个值,共有多少种不同的硬币组合方式。 思路: 典型的母函数问题。 可列出母函数 g(x) = (1+x+x^2+x^3+…)*(1+x^4+x^8+…)*…*(1+x^289+x^578+…),用母函原创 2015-05-14 22:33:14 · 871 阅读 · 0 评论 -
HDU2079 选课时间(题目已修改,注意读题)【母函数】
题目大意: 给你各种学分的课程数,问:选课凑够N学分的情况有多少种。 给你两个整数N和K,N表示要凑够的学分数。K表示接下来K行,每行为两个整数a和b。 表示学分为a的课程有b们。求出选够N学分的方案数有多少种。 思路: 可以用母函数做,也可以用多重背包来做。这两种做法,感觉实质上没什么区别吧。多重背包 用滚动数组优化一下也是一样的。这里用母函数来解决。这是一道母函数的模板题,关于母函 数,网上有好多资料,就不再描述了。原创 2015-04-09 11:46:49 · 1050 阅读 · 0 评论 -
HDU1028 Ignatius and the Princess III【母函数】【完全背包】
题目大意: 给定正整数N,定义N = a[1] + a[2] + a[3] + … + a[m],a[i] > 0,1 <= m <= N。 对于给定的正整数N,问:能够找出多少种这样的等式? 思路: 对于N = 4, 4 = 4; 4 = 3 + 1; 4 = 2 + 2; 4 = 2 + 1 + 1; 4 = 1 + 1 + 1 + 1。 共有5种。N=4时,结果就是5。其实就是整数分解问题,可写出母函数 g(x) = (1+x+x^2+x^3+…)*(1+x^2+x^4+…)*(1+x^3+…)*(原创 2015-05-14 22:45:38 · 1122 阅读 · 0 评论 -
HDU1709 The Balance【母函数】
题目大意: 现有一个天平和不同质量的砝码,每个质量的砝码只有一个,且令S为这些砝码质量的总和。 现在,从1~S中,找到用这些砝码不能称出的物品质量。 思路: 每种砝码既可以放在右盘,又可以放在左盘,如果视作左物右码的话,砝码放在左边取减号, 放在右边取加号。最终将指数看为正数,求得的系数要求绝对值。放在同一端c2[j+k] += c1[j]; 放在不同端c2[abs(k-j)] += c1[j]。原创 2015-05-15 10:39:16 · 1205 阅读 · 0 评论 -
NEFU776 抓住奥斯卡【母函数】
题目大意: 给你面值为1分、2分、5分的硬币,并且这些硬币的数量分别为N1,N2和N5。问: 这些硬币最小不能表示的值为多少。 思路: 母函数问题,通过分析,可得: g(x) = (1+x+x^2+x^3+…+x^N1) * (1+x^2+x^4+…x^(2*N2) ) * (1+x^5+x^10+…x^(5*N5) ) 这些硬币能表示的最大值Max = N1 + N2*2 + N5*5。考虑1,2,…,Max,Max+1次幂的系数是 否为令,找出这些硬币不能表示的最小的值。原创 2015-05-15 08:54:42 · 961 阅读 · 0 评论