hdu 2152 Fruit

it2022-05-06  9

嘿嘿,又一道母函数

不过这个没办法直接用之前大致的模板,因为之前的G(x)=(1+x+x^2)*(1+x^2+x^4)……

每一个括号都有一个1,所以我没有将数组num1[]重新置为0,而现在G(x)=(x^a1+x^(a1+1)+……+x^b1)*(x^a2+x^(a2+1)+……+x^b2)……

#include<iostream> #include<string> #include<algorithm> using namespace std; int maxn,n,m; struct neg { int a,b; }c[110]; int num1[110],num[110]; void sovle() { memset(num,0,sizeof(num)); memset(num1,0,sizeof(num1)); num[0]=1; for(int i=1;i<=n;i++) { for(int k=c[i].a;k<=c[i].b;k++) for(int j=0;j<=maxn;j++) { if(j+k>m) break; num1[k+j]+=num[j]; } for(int j=0;j<=m;j++) { num[j]=num1[j]; num1[j]=0; } } } int main() { while(scanf("%d %d",&n,&m)==2) { maxn=0; for(int i=1;i<=n;i++) { scanf("%d %d",&c[i].a,&c[i].b); maxn+=c[i].b; } sovle(); printf("%d\n",num[m]); } return 0; }

 

转载于:https://www.cnblogs.com/nanke/archive/2011/11/02/2233647.html

相关资源:数据结构—成绩单生成器

最新回复(0)