天天看點

HDU 5890 Eighty seven

#include <bits/stdc++.h>
#define

using namespace std;
bitset<88> b[11];
bool f[A][A][A];
int a[A], n, T;
bool check(int aa, int bb, int c) {
  for (int i = 1; i <= 10; i++) b[i].reset();
  b[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    if (i == aa or i == bb or i == c) continue;
    for (int j = 10; j > 0; j--) b[j] |= b[j - 1] << a[i];
  }
  return b[10][87];
}

int main(int argc, char const *argv[]) {
  cin >> T;
  while (T--) {
    cin >> n; memset(f, 0, sizeof f);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    for (int i = 1; i <= n; i++)
      for (int j = i; j <= n; j++)
        for (int k = j; k <= n; k++)
          if (check(i, j, k)) {
            f[i][j][k] = f[i][k][j] = 1;
            f[j][i][k] = f[j][k][i] = 1;
            f[k][i][j] = f[k][j][i] = 1;
          }
    int q, x, y, z; cin >> q;
    while (q--) {
      scanf("%d%d%d", &x, &y, &z);
      if (f[x][y][z]) puts("Yes");
      else puts("No");
    }
  }
}