标签:
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 13395 | Accepted: 8382 |
Description
Input
Output
Sample Input
2 4 -2 3 3 4 5 8
Sample Output
2
Source
讲道理这题其实很简单,但是我一开始脑抽把他化成C*G个物品,然后一脸智障的拿去问cx大佬为什么错了0.0……
天平左右不重要,Σa[i]*b[j]=0就相当于天平平衡
f[i][j]表示前i个物品,重量为j的方案数
f[i][j]=Σf[i-1][j-a[k]*b[i]](k 1…n)
1 #include <cstdio> 2 #include <cmath> 3 #include <cstring> 4 #include <cstdlib> 5 #include <queue> 6 #include <stack> 7 #include <vector> 8 #include <iostream> 9 #include "algorithm" 10 using namespace std; 11 typedef long long LL; 12 int n,m; 13 int a[25],b[25]; 14 int f[25][16005]; 15 void init(){ 16 int i,j; 17 scanf("%d%d",&n,&m); 18 for (i=1;i<=n;i++) 19 scanf("%d",a+i); 20 for (j=1;j<=m;j++) 21 scanf("%d",b+j); 22 memset(f,0,sizeof(f)); 23 f[0][7500]=1; 24 } 25 int main(){ 26 freopen ("balance.in","r",stdin); 27 freopen ("balance.out","w",stdout); 28 init();int i,j,k; 29 for (i=1;i<=m;i++) 30 for (j=15000;j>=0;j--) 31 for (k=1;k<=n;k++) 32 f[i][j+a[k]*b[i]]+=f[i-1][j]; 33 printf("%d",f[m][7500]); 34 return 0; 35 }
标签:
原文地址:http://www.cnblogs.com/Michaelzzn/p/5727484.html