标签:
Jam有NN个砝码和一个没有游标的天平,现在给他(1 \leq N \leq 20)(1≤N≤20)个砝码,砝码可以放左边,也可以放右边,问可不可以测出所问的重量, 问的个数为(1 \leq M \leq 100)(1≤M≤100)个.
#include<bits/stdc++.h> using namespace std ; typedef long long ll; const int N = 5000; int n,m,a[N+10],dp[N+10],sum; void DP() { memset(dp,0,sizeof(dp)); dp[0]= 1; for(int i = 1; i<= n; i++) { for(int k=2;k;k--) for(int j = sum*2;j>=a[i];j--) { dp[j]|=dp[j-a[i]]; } } } int main() { int T,x; scanf("%d",&T); while(T--) { scanf("%d",&n);sum=0; for(int i = 1;i <= n; i++) scanf("%d", &a[i]),sum+=a[i]; DP(); scanf("%d", &m); for(int i = 1; i<= m; i++) { scanf("%d", &x); int g = x+sum&&sum+x>=0&&dp[x+sum]; if(g)printf("YES\n"); else printf("NO\n"); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/zxhl/p/5172375.html