USACO Section 2.3 Money Systems - 矮油.有Trick阿...

来源:互联网 发布:淘宝网电视柜 编辑:程序博客网 时间:2024/06/15 22:52

    差不多是赤果果的多重背包~~将方案数跟着传递~结果我WA了3,4次才过!!!原因是

   1. 虽然说N<= 10,000...但是!!输入的钱可能大于10,000...这里要continue~~要不就直接给爆了...

   2.尼玛最后的结果会可能>2^32阿!!!用long long !!


Program:

/*  ID: zzyzzy12  LANG: C++  TASK: money*/    #include<iostream>    #include<stdio.h>    #include<string.h>    #include<math.h>    #include<algorithm>    #include<queue>using namespace std;   long long s[10005],v,n,x,i; int main(){     freopen("money.in","r",stdin);     freopen("money.out","w",stdout);       memset(s,0,sizeof(s));     cin>>v>>n;     while (v--)     {           cin>>x;           if (x>n) continue;           s[x]++;           for (i=1;i<=n-x;i++)              if (s[i]) s[i+x]+=s[i];     }     cout<<s[n]<<endl;     return 0;   }