【个人训练】(POJ1837)Balance
这几天抓住国庆的黄金时间(因为没有女朋友,天天刷题emmmm 其实还在肝少前还要捞秋刀鱼) ,重点攻克掉几个基本的地方:搜索、dp、图论。这几天的题目应该就是这些范围。
题意
原题的意思大概是这样的,有个天平,上面一堆挂钩,然后一堆砝码,砝码挂在挂钩上面,问平衡的情况有几种。
分析
显然不能穷举,因为
我们可以放在任何一个挂钩上,有
说的应该还是有些啰嗦,以后再改吧,唉。。。
代码
这份代码基本上和网上另外一个dalao是一样的,因为跟着ta的思路走的。太菜了啊,唉。。。。
#include <cstring>
#include <algorithm>
#include <iostream>
#include <queue>
#include <set>
#include <map>
#include <vector>
using namespace std;
typedef unsigned long long ull;
int rep[24],val[24];
int dp[25][15005];
int main()
{
int c,g;
while(cin>>c>>g)
{
for(int i=1;i<=c;++i) cin>>rep[i];
for(int i=1;i<=g;++i) cin>>val[i];
memset(dp,0,sizeof(dp));
dp[0][7500]=1;
for(int i=1;i<=g;++i)
for(int j=1;j<=15000;++j)
if(dp[i-1][j])
for(int k=1;k<=c;++k)
dp[i][j+val[i]*rep[k]]+=dp[i-1][j];
cout<<dp[g][7500]<<endl;
}
return 0;
}
如非注明,原创内容遵循GFDLv1.3发布;其中的代码遵循GPLv3发布。