poj1837 Balance

Posted welotx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1837 Balance相关的知识,希望对你有一定的参考价值。

Topic Links

Topic meaning:有一天平其左右臂长为15,有m个数字,一个数字表示天平上一个钩子距天平中心点的距离,左边为负数,右边为正数,有n个质量确定的砝码,所有砝码都应被悬挂上去,一个钩子可以挂多个砝码,问有多少种挂法使得天平保持平衡;

Method of Solving:分组背包

每个砝码可以悬挂的位置为一组,dp[i][j]表示前i个砝码使得天平左右力量之差为j的方案数,由于j不能为负数在结合题目条件,故将j增大3000,即dp[0][3000]为悬挂0个砝码时左右力量之差为0,可得其方案数为1

所以dp[i][j]是用第i个砝码与第k个钩子的组合

状态转移方程:dp[i][j]=dp[i][j]+dp[i-1][j+a[i]*c[k]];

#include<iostream>
using namespace std;
int n,m,c[25],a[25],dp[25][6005];
int main()
    cin>>m>>n;
    for(int i=1;i<=m;i++) cin>>c[i];
    for(int i=1;i<=n;i++) cin>>a[i];
    dp[0][3000]=1;
    for(int i=1;i<=n;i++)
    for(int j=6000;j>=0;j--)
    for(int k=1;k<=m;k++)
      dp[i][j]=dp[i][j]+dp[i-1][j-c[k]*a[i]];
    cout<<dp[n][3000]<<endl;
return 0;

  

以上是关于poj1837 Balance的主要内容,如果未能解决你的问题,请参考以下文章

POJ1837 Balance

POJ1837 Balance[分组背包]

POJ - 1837 Balance

POJ 1837

Poj1837 Balance 动态规划-01背包

POJ 刷题系列:1837. Balance