AcWing 532. 货币系统
原题链接
中等
作者:
楚天
,
2020-10-09 18:35:45
,
所有人可见
,
阅读 363
这道题通过打表可以发现一下几个性质
性质 1:a1,a2,...an一定都可以被表示出来
性质2:在最优解中,b1,b2.....bm一定都是从a1,a2,....an中选择的
性质3:b1,b2...bm一定不能被其他的bi所表示,否则答案一定不优
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5;
int f[maxn],t,n,maxx;
int a[maxn];
int res;
int main()
{
cin>>t;
for(int k=1;k<=t;k++)
{
memset(a,0,sizeof(a));
memset(f,0,sizeof(f));
res=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
maxx=max(maxx,a[i]);
}
f[0]=1;
for(int i=1;i<=n;i++)
for(int j=a[i];j<=maxx;j++)
f[j]=f[j]+f[j-a[i]];
for(int i=1;i<=n;i++)
if(f[a[i]]==1)res++;
cout<<res<<endl;
}
return 0;
}