列表

详情


NC13586. 小M和天平

描述

小M想知道某件物品的重量,但是摆在他面前的只有一个天平(没有游标)和一堆石子,石子可以放左边也可以放右边。他现在知道每个石子的重量。问能不能根据上述条件,能不能测出所问的重量。

输入描述

多组数据,第一行一个数N,表示石子个数。(1<=N<=100) 接下来第二行N个数,表示石子的重量。(1<=Wi<=100) 接下来第三行一个数M,表示询问个数。(1<=M<=1000) 接下来M行每行一个数k(1<=k<=1e9),表示一个询问。

输出描述

对于每组数据,输出"YES"或者"NO"

示例1

输入:

2
1 4
3
2
4
5

输出:

NO
YES
YES

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 1721ms, 内存消耗: 7592K, 提交时间: 2021-08-19 19:51:23

#include<bits/stdc++.h>
using namespace std;
const int N = 1e4;
bitset<N+N+10> b;
int main(){
	int n;
	while(cin >> n){
		b.reset();b[N]=1;
		for(int i=1;i<=n;i++){
			int a;cin >> a;
			b|=(b<<a)|(b>>a);
		}
		int m;cin >> m;
		while(m--){
			int a;cin >> a;
			if(a<=10000&&b[N+a]) cout<<"YES\n";
			else cout<<"NO\n";
		}
	}
	return 0;
}

上一题