DP/POJ 1837 Balance

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 int f[25][15010];
 5 int c[25],g[25];
 6 int C,G;
 7 int main()
 8 {
 9     scanf("%d%d",&C,&G);
10     for (int i=1;i<=C;i++) scanf("%d",&c[i]);
11     for (int i=1;i<=G;i++) scanf("%d",&g[i]);
12     memset(f,0,sizeof(f));
13     f[0][7500]=1;
14     for (int i=1;i<=G;i++)
15         for (int j=-7500;j<=7500;j++)
16             if (f[i-1][j+7500]>0)
17             {
18                 for (int k=1;k<=C;k++)
19                     f[i][j+c[k]*g[i]+7500]+=f[i-1][j+7500];
20             }
21     printf("%d\n",f[G][7500]);
22     return 0;
23 }
时间: 2024-11-08 22:06:54

DP/POJ 1837 Balance的相关文章

poj 1837 Balance (dp,01背包)

链接:poj 1837 题意:有一个天平,天平左右两边各有若干个钩子,总共有C个钩子,有G个钩码, 求将钩码挂到钩子上使天平平衡的方法的总数.其中可以把天枰看做一个以x轴0点作为平衡点的横轴 分析:力臂=重量 *臂长 = g[i]*c[j] 当平衡度k=0时,说明天枰达到平衡,k>0,说明天枰倾向右边(x轴右半轴),k<0则左倾 因此可以定义一个 状态数组dp[i][k],意为在挂满前i个钩码时,平衡度为k的挂法的数量. 由于距离c[i]的范围是-15~15,钩码重量的范围是1~25,钩码数量

POJ 1837 Balance

题意:给你C个挂钩,W个钩码,要你能使一个天平平衡 数据解释: 2 4 -2 3 3 4 5 8 以原点为支点,那么-2代表支点左边2处有一个钩码,同理3代表右边的点 所以案例数据有一个成立的例子是(3+5)*3=(4+8)*2或是(3+4+5)*2=8*3(力臂平衡) 有2种情况所以输出2: 思路:这个如果不是按照题目的分类说是DP我还想不到这个思路,我感觉我进步挺大了,能独立推出转移方程了. 首先我们看这道题首先是要求力平衡,那么一个限制是重量.与力相关的有钩码与挂钩的位置.显然,钩码可以放

poj 1837 Balance(背包)

题目链接:http://poj.org/problem?id=1837 Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10983   Accepted: 6824 Description Gigel has a strange "balance" and he wants to poise it. Actually, the device is different from any other

POJ 1837 Balance 背包dp

点击打开链接 Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11067   Accepted: 6865 Description Gigel has a strange "balance" and he wants to poise it. Actually, the device is different from any other ordinary balance. It orders t

POJ 1837 Balance DP

Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10299   Accepted: 6372 Description Gigel has a strange "balance" and he wants to poise it. Actually, the device is different from any other ordinary balance. It orders two arms

POJ 1837 Balance 【DP】

题意:给出一个天平,给出c个钩子,及c个钩子的位置pos[i],给出g个砝码,g个砝码的质量w[i],问当挂上所有的砝码的时候,使得天平平衡的方案数, 用dp[i][j]表示挂了前i个砝码时,平衡点为j时的总的方案数, 状态转移为第i个砝码是否挂上,如果要挂上第i个砝码的话,j>=pos[i]*w[i](力矩=力臂*力) 因为最大的力矩为 20*15*25=150000 1 #include<iostream> 2 #include<cstdio> 3 #include<

POJ 1837 Balance (多重背包计数)

Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11706   Accepted: 7305 Description Gigel has a strange "balance" and he wants to poise it. Actually, the device is different from any other ordinary balance. It orders two arms

poj 1837 Balance 动态规划

题目链接:http://poj.org/problem?id=1837 使用迭代器对STL容器进行遍历的方法: for(set<int>::iterator it = check.begin(); it != check.end(); it++) { //...*it }   本题 a[]存挂钩位置 b[]存物品质量 把挂在天平左边的物品的质量视为负数 反之为正数 总质量的极限为20件重25的物品都挂在15的天平挂钩处 即7500 dp[i][j]表示前i件物品总质量为(j-10000)时的挂

poj 1837 Balance (0 1 背包)

Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10326   Accepted: 6393 题意:给你n个挂钩g个砝码  以及n个挂钩的距离天平中心距离(负的代表左边正的代表右边)g个砝码的重量. 要求输出能够令天平平衡的方法种类 解题思路     http://user.qzone.qq.com/289065406/blog/1299341345  非常具体 #include<iostream> #i