HDU 母函数简单题
来源:互联网 发布:imp oracle 导入数据 编辑:程序博客网 时间:2024/05/22 09:50
简单的四道母函数题。都做了2遍,一次母函数,一次计数DP(或叫背包)。
但是这几题背包的效率比母函数高,而且代码也短多了。。。
HDU 1028 Ignatius and the Princess III
代码:
#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>#include <algorithm>#include <map>using namespace std;#define LL long longint c1[130];int c2[120];int main(){ int n; while(~scanf("%d",&n)) { for(int i=0;i<=n;i++) { c1[i]=1; c2[i]=0; } for(int i=2;i<=n;i++) { for(int j=0;j<=n;j++) { for(int k=0;k+j<=n;k+=i) { c2[k+j]+=c1[j]; } } for(int i=0;i<=n;i++) { c1[i]=c2[i]; c2[i]=0; } } printf("%d\n",c1[n]); } return 0;}
HDU 2082 找单词
代码:
#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>#include <algorithm>#include <map>using namespace std;#define LL long longint c1[55];int c2[55];int main(){ int T; scanf("%d",&T); while(T--) { memset(c1,0,sizeof c1); memset(c2,0,sizeof c2); c1[0]=1; for(int i=1;i<=26;i++) { int a;scanf("%d",&a); for(int j=0;j<=50;j++) { for(int k=0,num=0;j+k<=50&&num<=a;k+=i,num++) { c2[k+j]+=c1[j]; } } for(int j=0;j<=50;j++) { c1[j]=c2[j]; c2[j]=0; } } int ans=0; for(int i=1;i<=50;i++) { ans+=c1[i]; } printf("%d\n",ans); } return 0;}
HDU 1398 Square Coins
代码:
#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>#include <algorithm>#include <map>using namespace std;#define LL long longconst int N = 300+6;int c1[N];int c2[N];int coin[20];void init(){ for(int i=1;i<=17;i++) { coin[i]=i*i; }}int main(){ int n; init(); while(~scanf("%d",&n)&&n) { for(int i=0;i<=n;i++) { c1[i]=1,c2[i]=0; } for(int i=2;i<=17&&coin[i]<=n;i++) { for(int j=0;j<=n;j++) { for(int k=0;k+j<=n;k+=coin[i]) { c2[k+j]+=c1[j]; } } for(int j=0;j<=n;j++) c1[j]=c2[j],c2[j]=0; } printf("%d\n",c1[n]); } return 0;}
HDU 1085 Holding Bin-Laden Captive!
代码:
#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>#include <algorithm>#include <map>using namespace std;#define LL long longconst int N = 300+6;int vis[9000];int main(){ int b[3]={1,2,5}; int a[3]; while(~scanf("%d %d %d",&a[0],&a[1],&a[2])) { if(!(a[0]+a[1]+a[2])) break; int maxx=0; for(int i=0;i<3;i++) { maxx+=a[i]*b[i]; } memset(vis,0,sizeof vis); vis[0]=1; for(int i=0;i<3;i++) { for(int j=maxx;j>=0;j--) { for(int k=0,num=0;num<=a[i];k+=b[i],num++) { if(vis[j]) vis[k+j]=1; } } } for(int i=1;i<=maxx+1;i++) { if(vis[i]==0) { printf("%d\n",i); break; } } } return 0;}
阅读全文
0 0
- HDU 母函数简单题
- hdu 2189 母函数简单题
- HDU 1085 简单母函数
- hdu--2189(简单的母函数)
- HDU 1398-Square Coins(简单母函数)
- (简单母函数进阶版,暴力)hdu 2069 Coin Change
- HDU 1085-Holding Bin-Laden Captive!(简单的母函数)
- strtok函数的简单应用 hdu 1106
- HDU 1228 简单题
- hdu 1008 简单题
- hdu 简单题
- HDU DP 简单题
- HDU 1012 简单题
- hdu 1005 简单题
- hdu 4451 简单题
- hdu 5198 简单题
- hdu 5122 简单题
- HDU 1787 简单的求欧拉函数 POJ 2047 裸欧拉函数
- GridView重复调用getView()方法处理方法
- java 基础知识
- mat--- -MAT比Menmery Monitor更强大
- 框架整合____SSH框架整合(主流整合方式,最易懂整合方式)
- POJ
- HDU 母函数简单题
- eclipse中配置activiti-5.18.0
- GCD
- 【Python】抓取京东列表页商品信息(selenium)
- PL2887|PL2887牛叉代理商|规格书|应用说明书|现货|价格|方案设计
- Spring mode = "aspectj" 配置事务报错
- 子组件向父组件传值
- 数据结构头结点链表
- JQuery实现购物车数量加减总价累加