A. Marin and Photoshoot
Today, Marin is at a cosplay exhibition and is preparing for a group photoshoot!
For the group picture, the cosplayers form a horizontal line. A group picture is considered beautiful if for every contiguous segment of at least cosplayers, the number of males does not exceed the number of females (obviously).
Currently, the line has cosplayers which can be described by a binary string . The -th cosplayer is male if and female if . To ensure that the line is beautiful, you can invite some additional cosplayers (possibly zero) to join the line at any position. You can't remove any cosplayer from the line.
Marin wants to know the minimum number of cosplayers you need to invite so that the group picture of all the cosplayers is beautiful. She can't do this on her own, so she's asking you for help. Can you help her?
The first line contains a single integer () — the number of test cases.
The first line of each test case contains a positive integer () — the number of cosplayers in the initial line.
The second line of each test case contains a binary string of length — describing the cosplayers already in line. Each character of the string is either 0 describing a male, or 1 describing a female.
Note that there is no limit on the sum of .
For each test case, print the minimum number of cosplayers you need to invite so that the group picture of all the cosplayers is beautiful.
9
3
000
3
001
3
010
3
011
3
100
3
101
3
110
3
111
19
1010110000100000101
4
2
1
0
2
0
0
0
17
In the first test case, for each pair of adjacent cosplayers, you can invite two female cosplayers to stand in between them. Then, .
In the third test case, you can invite one female cosplayer to stand next to the second cosplayer. Then, .
solution
#include<iostream>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<vector>
#define ll long long
using namespace std;
void solve()
{
//A. Marin and Photoshoot
ll n;
cin >> n;
string s;
cin >> s;
ll cnt = 0;
for (int i = 0; i < n; i++)
{
if (s[i] == '0' && s[i + 1] == '0')
cnt += 2;
else if (s[i] == '0' && s[i + 1] == '1' && s[i + 2] == '0')
cnt += 1;
}
cout << cnt << "\n";
}
int main()
{
int t;
cin >> t;
while (t--)
{
solve();
}
return 0;
}
No comments:
Post a Comment