hdu 2079(简单母函数)
import java.util.Arrays;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(System.in);
int T = cin.nextInt();
while(T-- > 0) {
n = cin.nextInt();
m = cin.nextInt();
sum = 0;
for(int i = 0; i < m; i++) {
score[i] = cin.nextInt();
num[i] = cin.nextInt();
sum += score[i] * num[i];
}
genFun();
System.out.println(c1[n]);
}
}
public static void genFun() {
Arrays.fill(c1, 0);
Arrays.fill(c2, 0);
c1[0] = 1;
int i, j, k;
for(i = 0; i < m; i++) {
for(j = 0; j <= sum; j++ ) {
for(k = 0; (j + k * score[i] <= sum) && (k <= num[i]); k++) {
c2[j + k * score[i]] += c1[j];
}
}
for(j = 0; j <= sum; j++) {
c1[j] = c2[j];
c2[j] = 0;
}
}
}
static int n, m, sum;
final static int[] c1, c2;
final static int[] score, num;
static {
c1 = new int[650];
c2 = new int[650];
score = new int[10];
num = new int[10];
}
}
浙公网安备 33010602011771号