这条题目本质是最大化所有子串的mex之和,即最大化同时包含0和1的子串数量、
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--) {
int a, b;
cin >> a >> b;
string s;
if (a == 0) {
s = string(b, '1');
} else if (b == 0) {
s = string(a, '0');
} else if (a >= b) {
int m = b + 1;
int base = a / m;
int rem = a % m;
for (int i = 0; i < b; ++i) {
s += string(rem > 0 ? base + 1 : base, '0');
if (rem > 0) rem--;
s += '1';
}
s += string(base, '0');
} else {
int m = a + 1;
int base = b / m;
int rem = b % m;
for (int i = 0; i < a; ++i) {
s += string(rem > 0 ? base + 1 : base, '1');
if (rem > 0) rem--;
s += '0';
}
s += string(base, '1');
}
cout << s << '\n';
}
return 0;
}

京公网安备 11010502036488号