POJ 1837 Balance(DP)

题目链接

开始看错题了,导致一直没找到节奏,看宝哥题解过的。

 1 #include <cstdio>

 2 #include <cstring>

 3 #include <cmath>

 4 #include <string>

 5 #include <map>

 6 #include <algorithm>

 7 #include <queue>

 8 #include <vector>

 9 using namespace std;

10 #define C 7500  

11 int dp[21][20001];

12 int hook[101],wei[101];

13 int main()

14 {

15     int i,j,k,c,g;

16     scanf("%d%d",&c,&g);

17     for(i = 1;i <= c;i ++)

18     {

19         scanf("%d",&hook[i]);

20     }

21     for(i = 1;i <= g;i ++)

22     {

23         scanf("%d",&wei[i]);

24     }

25     dp[0][C] = 1;

26     for(i = 1;i <= g;i ++)

27     {

28         for(j = 1;j <= c;j ++)

29         {

30             for(k = -7500;k <= 7500;k ++)

31             {

32                 dp[i][k+hook[j]*wei[i]+C] += dp[i-1][k+C];//加C避免出现负数

33             }

34         }

35     }

36     printf("%d\n",dp[g][7500]);

37     return 0;

38 }

 

你可能感兴趣的:(poj)