这种题型最近碰到的有点多。。先记录下
这个是一些区间 轮流选。当前选的不能和之前的区间有交集。。
感觉就是一个区间dp 。。递归的赶脚。
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll __int128_t
#define ar array<int, 2>
#define arr array<int, 3>
int n, m, k, inf = 1LL << 61, mod = 998244353;// 1e9+7;
const int N = 5e5 + 50;
int f[101][101], a[101], b[101];
int dfs(int l, int r) {
if (l == r)return 0;
if (~f[l][r])return f[l][r];
set<int>st;
for (int i = 1; i <= n; ++i)
if (l <= a[i] && b[i] <= r) {
st.insert(dfs(l, a[i])^dfs(b[i], r));
}
int mex = 0;
while (st.count(mex))++mex;
return f[l][r] = mex;
};
void solve() {
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> a[i] >> b[i];
memset(f, -1, sizeof f);
cout << (dfs(0, 100) ? "Alice" : "Bob") << '\n';
};
//一人一世界。。
//如果我来选 肯定选那种 交集多的那些中间区间。。无脑选。。
// https://drken1215.hatenablog.com/entry/2021/06/19/224100
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout << fixed << setprecision(15);
#ifdef DEBUG
freopen("../1.in", "r", stdin);
#endif
//init_f();
//init();
//expr();
int T; cin >> T; while (T--)
solve();
return 0;
}