hdu_5616_Jam's balance(暴力枚举子集||母函数)

题目连接:hdu_5616_Jam's balance

题意:

给你一些砝码,和一些要被称出的重量,如果这些砝码能称出来输出YES,否则输出NO

题解:我们想想,这题求组合方式,我们这里可以直接用母函数艹过去,这里我写的枚举子集的方式,其实就是母函数的形式

 #include<cstdio>
#define F(i,a,b) for(int i=a;i<=b;i++)
int abs(int a){return a<?-a:a;}
int a[],dp[][];
int main(){
int t,n,m,sum,x;
scanf("%d",&t);
while(t--){
scanf("%d",&n),sum=;
F(i,,n)scanf("%d",a+i),sum+=a[i];
F(i,,n)F(j,,sum)dp[i][j]=;
dp[][a[]]=;
F(i,,n)dp[i][]=;
F(i,,n)F(j,,sum){
dp[i][j]|=dp[i-][j];
dp[i][j+a[i]]|=dp[i-][j];
dp[i][abs(j-a[i])]|=dp[i-][j];
}
scanf("%d",&m);
while(m--)scanf("%d",&x),dp[n][x]?puts("YES"):puts("NO");
}
return ;
}
上一篇:layui数据表格的td模板


下一篇:MySQL缓存机制详解(一)