码迷,mamicode.com
首页 > 其他好文 > 详细

poj_1837

时间:2015-03-06 15:32:55      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

dp[i][j]
用前i个砝码,使"力矩"大小为j的情况数量
极端情况下,20个重量为25的砝码,都挂在距离中心点-15的位置,得到力矩是-7500
所以,让j=7500时为平衡状态

 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 #define MAXN 20
 5 
 6 int C, G, dp[MAXN+1][2*MAXN*15*25+1], hook[MAXN+1], weight[MAXN+1];
 7 
 8 int main(int argc, char const *argv[])
 9 {
10     // freopen("in", "r", stdin);
11     scanf("%d%d", &C, &G);
12     for(int i = 1; i <= C; ++i)
13         scanf("%d", &hook[i]);
14     for(int i = 1; i <= G; ++i)
15         scanf("%d", &weight[i]);
16 
17     // initialize
18     memset(dp, 0 ,sizeof(dp));
19     dp[0][7500] = 1;
20 
21     // dp
22     for(int i = 1; i <= G; ++i)
23         for(int j = 0; j <= 15000; ++j)
24             if(dp[i-1][j])
25                 for(int k = 1; k <= C; ++k)
26                     dp[i][ j+hook[k]*weight[i] ] += dp[i-1][j];
27 
28     printf("%d\n", dp[G][7500]);
29     return 0;
30 }

 

poj_1837

标签:

原文地址:http://www.cnblogs.com/takeoffyoung/p/4318279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!