母函数(生成函数)学习
来源:互联网 发布:java游戏破解版网站 编辑:程序博客网 时间:2024/06/16 13:59
参考博客:
http://blog.csdn.net/xiaofei_it/article/details/17042651
http://blog.csdn.net/ten_sory/article/details/59483762
解决给定不同价值硬币,求凑得某些钱的方案数类型的问题
这类函数可以转化成生成函数问题,如下图所示
此类问题的模板如下
int work(int n,int sum)//有n种硬币,希望得到sum价值{ int v[n+1];//v[i]为第i种硬币的价值 int s[n+1],e[n+1];//第i种硬币至少用s[i]个,至多用e[i]个 int maxn=0;//maxn表示所有硬币能得到的最大价值 for(int i=1;i<=n;i++) maxn+=v[i]*e[i]; int a[maxn+1],b[maxn+1];//a,b用于记录运行结果 memset(a,0,sizeof(a)); a[0]=1; for(int i=1;i<=n;i++) { memset(b,0,sizeof(b)); for(int j=s[i];j<=e[i]&&j*v[i]<=maxn;j++)//循环每个因子的每一项 for(int k=0;k+j*v[i]<=maxn;k++)//循环a的每个项 b[k+j*v[i]]+=a[k];//把结果加到对应位 memspy(a,b,sizeof(b));//b赋值给a } //a[sum]表示得到sum价值的方案数}
用一个last变量记录目前最大的指数,这样只需要在0..last上进行计算。
这里给出第二个模板:
int work_plus(int n,int sum){ int v[n+1],s[n+1],e[n+1]; int maxn=0; for(int i=1;i<=n;i++) maxn+=v[i]*e[i]; int a[maxn+1],b[maxn+1]; a[0]=1;//初始化a,因为有last,所以这里无需初始化其他位 int last=0; for(int i=1;i<=n;i++) { int last2=min(last+e[i]*v[i],maxn);//计算下一次的last2 memset(b,0,sizeof(int)*(last2+1));//只清空b[0..last2] for(int j=s[i];j<=e[i]&&j*v[i]<=last2;j++)//这里是last2 for(int k=0;k<=last&&k+j*v[i]<=last2;k++)//这里一个是last,一个是last2 b[k+j*v[i]]+=a[k]; memcpy(a,b,sizeof(int)*(last2+1));//b赋值给A=a,只赋值0..last2 last=last2;//更新last }}
例题hdoj 1085,hdoj 1171,hdoj 2079,hdoj 2082,hdoj2110
阅读全文
0 0
- 母函数(生成函数)学习
- 母函数(生成函数)学习 hdu 1028
- 生成函数(母函数)
- 生成函数(母函数)
- 生成函数(母函数)
- 母函数(生成函数)
- 母函数(生成函数)
- 母函数(生成函数)
- 母函数(生成函数)
- 生成函数学习笔记
- 【模板】母函数(生成函数)
- 生成函数(母函数)1003
- 生成函数(母函数)1005
- TensorFlow 学习(九)—— 初始化函数(概率分布函数 api、常数生成函数)
- HDU 2079 选课时间(母函数/生成函数)
- Python学习(四)---序列生成range函数、循环
- HDU1028-HDU1085-母函数(生成函数)
- 生成函数(Generating Function)/母函数
- poj2456Aggressive cows(二分搜索最小化最大值)
- 基本的JSP中调用Ajax与Servlet进行数据交互
- 通过MailServer和Foxmail搭建本地邮件服务器及实现本地邮箱账号收发邮件
- ubuntu下打开matlab
- Ubuntu下deb包的安装方法
- 母函数(生成函数)学习
- java笔记
- Tensorflow实例之使用LSTM预测股票每日最高价(二)
- 牛客练习赛4(A+B)
- 简单总结一下strcmp函数的实现
- vue的模板 <template></template>
- 【南阳理工】 289 【基础】
- Python __getattr__ __getattribute__ __setattr__
- 【C#】不能像使用方法那样使用不可调用的成员"System.Data.DataSet.Tables".