Asa's Website

A - Exhaustive Search

cpaojalds1

最終更新日

Table of Contents

Loading...

問題

https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/5/ALDS1_5_A

問題文

長さ nn の数列 AA、整数 mm
AA の要素のいくつかの要素を足し合わせて mm が作れるか?
なお、各要素は 1 回だけ使える。

数列 AA が与えられたうえで、質問として qq 個の mim_i が与えられるので、 yes/no

制約

サンプル

I/O 1

5 1 5 7 10 21 4 2 4 17 8
no no yes yes

考察

nn が小さめなので全探索。
使う / 使わないの bit 全探索。

コード

https://onlinejudge.u-aizu.ac.jp/status/users/a01sa01to/submissions/1/ALDS1_5_A/judge/6771394/C++17

int main() { int n; cin >> n; vector<int> a(n); rep(i, n) cin >> a[i]; set<int> st; rep(bit, 1 << n) { int s = 0; rep(i, n) { if (bit & (1 << i)) s += a[i]; } st.insert(s); } int q; cin >> q; while (q--) { int m; cin >> m; puts(st.count(m) ? "yes" : "no"); } return 0; }