雑記・まとめ

個人的な備忘録

ALDS1_5_A

bit全探索

 

毎クエリ計算しているとTLEになるのでクエリの外で前計算してテーブルに持たせておいて,各クエリの処理はテーブルを参照する

クエリ処理は気をつけよう…(反省)

 

#include<bits/stdc++.h>
using namespace std;

int n;
int q;
int a[29];
map < int, bool > mp;

int main(){

    cin >> n;
    for(int i=0;i<n;i++) cin >> a[i];

    for(int i=0;i<(1<<n);i++){
        int sum = 0;
        for(int j=0;j<n;j++){
            if*1 != 0) sum += a[j];
        }
        mp[sum] = true;
    }

    cin >> q;
    while(q--){
        int m;
        cin >> m;

        if(mp[m] == 1) puts("yes");
        else puts("no");
       
    }

}

*1:i&(1<<j