题解:P16952 「LAOI-18」口約束
GreenMelon · · 题解
水绿,我这种菜瓜都能做出来。
首先
然后考虑不同的情况,对于所有长度为
- 区间
\text{mex} 值为1 时,要使相邻三个元素都是0 ; - 区间
\text{mex} 值为0 时,要使相邻三个元素都是1 ; - 区间
\text{mex} 值为2 时,要使相邻三个元素中至少有一个是1 。
这些也不难想到。
第一种情况直接输出
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n;
cin >> n;
if (n % 3 != 2 || n < 8) {
cout << -1 << '\n';
return ;
}
else {
for (int i = 1; i <= n / 3 + 2; i ++) cout << "0 ";
for (int i = 1; i <= n / 3 + 2; i ++) cout << "1 ";
for (int i = 3; i <= n / 3; i ++) {
if (i % 3 == 2) cout << "1 ";
else cout << "0 ";
}
cout << '\n';
}
}
int main() {
int T;
cin >> T;
while (T --) solve();
}