比赛 期末考试4 评测结果 AAAAWWAAAATTTTTTTTTTTTTTT
题目名称 区间消除 最终得分 32
用户昵称 LikableP 运行时间 16.570 s
代码语言 C++ 内存使用 1.66 MiB
提交时间 2026-02-12 11:15:55
显示代码纯文本
#include <cstdio>
#include <bitset>
#include <numeric>
typedef long long ll;

int n, q;
ll partial[110];

int main() {
  #ifdef LOCAL
    freopen("!input.in", "r", stdin);
    freopen("!output.out", "w", stdout);
  #else
    freopen("dump.in", "r", stdin);
    freopen("dump.out", "w", stdout);
  #endif

  scanf("%d", &q);
  while (q--) {
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) {
      scanf("%lld", &partial[i]);
    }

    std::bitset<110> bitset[110][110];
    std::partial_sum(partial + 1, partial + n + 1, partial + 1, [](ll x, ll y) { return x ^ y; });
    for (int i = 1; i <= n; ++i) bitset[i][i][i] = 1;

    for (int len = 2; len <= n; ++len) {
      for (int l = 1; l <= n - len + 1; ++l) {
        int r = l + len - 1;
        for (int i = l; i < r; ++i) {
          ll xorleft = partial[i] ^ partial[l - 1], xorright = partial[r] ^ partial[i];
          if (xorleft > xorright) {
            bitset[l][r] |= bitset[l][i];
          } else if (xorleft < xorright) {
            bitset[l][r] |= bitset[i + 1][r];
          } else {
            bitset[l][r] |= bitset[l][i] | bitset[i + 1][r];
          }
        }
      }
    }

    for (int i = 1; i <= n; ++i) {
      putchar(bitset[1][n][i] ? '1' : '0');
    }
    putchar('\n');
  }

  return 0;
}