ACM_模板_母函数
来源:互联网 发布:阿里旺旺软件下载 编辑:程序博客网 时间:2024/05/17 23:25
母函数作为一类数学思维的转换运用,由于算法本身很好理解,其关键也是是一套模板的灵活运用,所以也没什么好讲的,小编以整数拆分为例,给出小编母函数的模板。
#include <stdio.h>//母函数 #define maxn 10000int c1[maxn+1],c2[maxn+1];int main(){int n,i,j,k;while(scanf("%d",&n)!=EOF){for(i=0;i<=n;i++){c1[i]=0; c2[i]=0;}for(i=0;i<=n;i++) c1[i]=1;for(i=2;i<=n;i++){ for(j=0;j<=n;j++) for(k=0;k+j<=n;k+=i) { c2[j+k]+=c1[j]; }for(j=0;j<=n;j++){c1[j]=c2[j]; c2[j]=0;}}printf("%d\n",c1[n]);}return 0;}
关于母函数,还有一个经典的运用,那就是天平秤,因为天平的砝码可以放到天平的两侧来实现,所以在母函数的运用上也是一个经典的变形。
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm>using namespace std;int c1[2010],c2[2010];int a[22];int main(){int t,n,m,i,j,k,sum,num;scanf("%d",&t);while(t--){sum=0;scanf("%d",&n); for(i=1;i<=n;++i) { scanf("%d",&a[i]); sum+=a[i]; }memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); c1[0]=c1[a[1]]=1; for(i=2;i<=n;i++) { for(j=0;j<=sum;j++) { for(k=0;k<=a[i]&&k+j<=sum;k+=a[i]) { c2[k+j]+=c1[j]; c2[abs(j-k)]+=c1[j]; } } for(j=0;j<=sum;j++) { c1[j]=c2[j]; c2[j]=0; } } scanf("%d",&m); while(m--) { scanf("%d",&num); if(num>sum) { printf("NO\n"); continue; } if(c1[num]) printf("YES\n"); else printf("NO\n"); }} return 0;}
0 0
- ACM_模板_母函数
- ACM_模板_指数型母函数
- ACM_模板_最小公倍数
- ACM_模板_网络流
- ACM_模板_背包问题
- ACM_模板_字典树
- ACM_模板_树状数组
- ACM_模板_线段树
- ACM_模板_树状数组
- ACM_模板_进制转换
- ACM_模板_求质因子
- ACM_模板_并查集
- ACM_模板_最小生成树
- ACM_模板_中国剩余定理(互质与非互质)
- ACM_模板_二分图匹配(匈牙利算法)-DFS
- ACM_模板_Tarjan算法
- ACM_模板_KMP算法
- ACM_模板_Manacher算法
- 奕新集团---单实例GG环境搭建
- 关于学科的疑惑
- socket http文件下载器c语言实现
- log4net记录日志
- 总结linux下tomcat修改端口失败的原因
- ACM_模板_母函数
- 对REST风格的理解
- 奕新集团---单实例到RAC11g生产环境搭建(无图)
- hdu2553 N皇后问题(回溯dfs)
- less
- hadoop搭建完毕后启动hadoop弹出ssh警告提示的解决办法
- IOS开发之UIView总结
- uva10271 经典DP
- [BZOJ1036][ZJOI2008]树的统计Count(树链剖分)