2012年3月5日
摘要: HDU_1028 这个题目可以用dp去解,用f[i][j]表示取到i这个数时和为j的方案数。 为了练一下生成函数,我就用生成函数的思路写了一下,构造生成函数G(x)=(1+x+x^2+…)(1+x^2+x^4+…)…(1+x^p+x^(2*p)+…)…,然后每次查询相当于查询x^n的系数是多少。#include<stdio.h>#include<string.h>#define MAXD 130long long int f[MAXD][MAXD];int N;void prepare(){ int i, j, k; memset(f, 0, sizeof(f)); f 阅读全文
posted @ 2012-03-05 23:54 Staginner 阅读(192) 评论(0) 推荐(1) 编辑
摘要: HDU_1398 这个题目可以用dp去解,用f[i][j]表示取到i*i这种硬币时面值为j的方案数。 为了练一下生成函数,我就用生成函数的思路写了一下,构造生成函数G(x)=(1+x+x^2+…)(1+x^4+x^8+…)…(1+x^289+x^578+…),然后每次查询相当于查询x^n的系数是多少。#include<stdio.h>#include<string.h>#define MAXD 20#define MAXM 310int f[MAXD][MAXM], N;void prepare(){ int i, j, k; memset(f, 0, sizeof(f 阅读全文
posted @ 2012-03-05 23:39 Staginner 阅读(348) 评论(0) 推荐(0) 编辑