class Solution {
public:
bool isCovered(vector<vector<int>>& f, int left, int right) {
vector<int> d(52, 0);
for (auto &t : f)
{
d[t[0]] ++ ;
d[t[1] + 1] -- ;
}
int sum = 0;
for (int i = 1; i <= 50; i ++ )
{
sum += d[i];
if (i >= left && i <= right && sum <= 0)
return false;
}
return true;
}
};
砖块
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int T;
scanf("%d", &T);
while (T -- )
{
int n;
string a, b;
cin >> n >> a;
b = a;
bool flag = false;
int p = 0;
vector<int> res;
for (int i = 0; i < n - 1; i ++ )
{
if (b[i] == 'W')
{
b[i] = 'B';
b[i + 1] = b[i + 1] == 'W'?'B':'W';
res.push_back(i + 1);
}
}
if (b[n - 1] == b[n - 2])
{
cout << res.size() << endl;
if (res.size())
{
for (auto &t:res)
cout << t << ' ';
cout << endl;
}
continue;
}
res.clear();
b = a;
for (int i = 0; i < n - 1; i ++ )
{
if (b[i] == 'B')
{
b[i] = 'W';
b[i + 1] = b[i + 1] == 'W'?'B':'W';
res.push_back(i + 1);
}
}
if (b[n - 1] == b[n - 2])
{
cout << res.size() << endl;
if (res.size())
{
for (auto &t:res)
cout << t << ' ';
cout << endl;
}
continue;
}
cout << -1 << endl;
}
return 0;
}