P9687 题解
FurippuWRY · · 题解
题意:构造一个长度为
- 对于字符串中所有的
p 个不在字符串两端的0 ,它们左边和右边的一个字符为1 。 - 使构造出的字符串的字典序最小。
先设
对于点 1,设一变量
对于点 2,仅需倒序输出所构造的
那如何判断输出
#include <bits/stdc++.h>
using namespace std;
const int N = 114514;
int t, n, p, s[N];
int main() {
cin >> t;
while (t--) {
int j = 1;
cin >> n >> p;
if (2 * p >= n) {
cout << -1 << '\n';
continue;
}
else {
for (int i = 0; i < n; ++i) s[i] = 0;
for (int i = 0; i < p; ++i) {
s[j + 1] = 1;
s[j - 1] = 1;
j += 2;
}
for (int i = n - 1; ~i; --i) {
cout << s[i];
}
cout << '\n';
}
}
return 0;
}