对于这题我们直接用贪心去做就行,如果是情况2或者情况3,就直接抓鱼,对于情况1,我们就直接做诱饵,如果情况0,那就判断有没有诱饵,有诱饵就抓鱼同时诱饵数减少1
至于最后为啥要cnt+=x/2;那是为了判断前面有没有遇到多次多余情况2 ,一次做诱饵,一次抓鱼,这样就可以使得抓的鱼最多。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;cin>>t;
while(t--){
int n; cin>>n;
string s; cin>>s;
int x = 0, cnt = 0;
for(int i=0;i<n;i++){
if(s[i]=='0'){
if(x){x--;cnt++;}
}
if(s[i]=='2'||s[i]=='3'){
cnt++;
}
if(s[i]=='1'){
x++;
}
}
cnt = cnt+x/2;
cout<<cnt<<endl;
}
return 0;
}