A. Marin and Photoshoot
题意:
插入最少的1使得任意长度大于2的连续子串中1的个数不少于0.
题解:
考虑最短不满足条件的字符串可能的形式:
1.00
2. 010
考虑使得每种情况都满足条件:
00必须在中间插入两个1才能满足条件,00->0110
010在中间插入一个1满足条件 ,010->0110
所以满足题目要求的合法构造是,任意两个0之间需要至少两个1,没有就需要补上。
#include<iostream>
using namespace std;
int t,n,l;
string s;
int main(){
cin>>t;
while(t--){
cin>>n>>s;
l=0;
for(int i=0;i<n-1;i++){
if(s[i]=='0'&&s[i+1]=='0') l+=2;
if(s[i]=='1'&&s[i-1]=='0'&&s[i+1]=='0') l++;
}
cout<<l<<endl;
}
}