http://poj.org/problem?id=1837一个简单的题目浪费了那么多时间啊,不行啊。怎样提高效率啊,thinking & coding都不行啊。要理解清楚算法的每个细节啊。
我擦啊,尼玛;阿。
把背包九讲研究透吧!!!!!!!!!!少年啊
wangs要注意啊:
1、做一个题目就要自己读完,理解完啊。
2、一定要thinking啊,thinking && thinking 啊啊啊啊啊
3、coding之前还要thinking如何code啊!!!!!!
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<algorithm>
#define maxx 25005
using namespace std;
int C,G;
int c[25],g[25];
long long f[maxx],h[maxx];
int main()
{
while (scanf("%d%d",&C,&G)==2)
{
for (int i=1;i<=C;i++)
scanf("%d",&c[i]);
for (int j=1;j<=G;j++)
scanf("%d",&g[j]);
memset(f,0,sizeof(f));
f[10000]=1;
for (int i=1;i<=G;i++)
{
for (int j=0;j<maxx ;j++ )
h[j]=f[j],f[j]=0;
for (int j=0;j<maxx ;j++ )
if (h[j])
for (int k=1;k<=C ;k++ )
f[j+c[k]*g[i]]+=h[j];
}
printf("%I64d\n",f[10000]);
}
return 0;
}
大大大的SB啊