#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void test() {
int n, gapLen{};
vector<pair<int, int>> gaps;
cin >> n;
for (int i = 0; i < n; ++i) {
char c;
cin >> c;
if (c == '1') {
if (gapLen != 0) {
gaps.emplace_back(gapLen, 1 + (i != gapLen));
gapLen = 0;
}
} else {
++gapLen;
}
}
if (gapLen != 0) {
gaps.emplace_back(gapLen, 1);
}
if (size(gaps) == 1 && gaps[0].first == n) {
cout << 0 << '\n';
return;
}
sort(begin(gaps), end(gaps), [](pair<int, int> p1, pair<int, int> p2) {
return p1.first / p1.second > p2.first / p2.second;
});
int round{}, safeNo{};
for (auto gap: gaps) {
int remainingLen = gap.first - round * gap.second;
if (remainingLen <= 0) {
break;
}
if (gap.second == 2) {
if (remainingLen < 3) {
++safeNo;
break;
}
safeNo += remainingLen - 1;
round += 2;
} else {
safeNo += remainingLen;
++round;
}
}
cout << n - safeNo << '\n';
}
int main() {
int t;
cin >> t;
for (int i = 0; i < t; ++i) {
test();
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <iostream> #include <vector> #include <algorithm> using namespace std; void test() { int n, gapLen{}; vector<pair<int, int>> gaps; cin >> n; for (int i = 0; i < n; ++i) { char c; cin >> c; if (c == '1') { if (gapLen != 0) { gaps.emplace_back(gapLen, 1 + (i != gapLen)); gapLen = 0; } } else { ++gapLen; } } if (gapLen != 0) { gaps.emplace_back(gapLen, 1); } if (size(gaps) == 1 && gaps[0].first == n) { cout << 0 << '\n'; return; } sort(begin(gaps), end(gaps), [](pair<int, int> p1, pair<int, int> p2) { return p1.first / p1.second > p2.first / p2.second; }); int round{}, safeNo{}; for (auto gap: gaps) { int remainingLen = gap.first - round * gap.second; if (remainingLen <= 0) { break; } if (gap.second == 2) { if (remainingLen < 3) { ++safeNo; break; } safeNo += remainingLen - 1; round += 2; } else { safeNo += remainingLen; ++round; } } cout << n - safeNo << '\n'; } int main() { int t; cin >> t; for (int i = 0; i < t; ++i) { test(); } } |
English