题意:0阶段是没有鱼也没有蛤,1阶段是没有鱼有蛤,2阶段是有鱼没有蛤,3阶段是有鱼也有蛤。蛤可以制作成鱼饵,来获取鱼,但是在有蛤的时候需要制作成鱼饵在下一阶段才能使用,且直接有鱼的情况下,不需要用鱼饵也可以获取鱼。制作鱼饵和直接钓鱼在一个阶段只能选择一项来进行。求最多可以获得多少条鱼。
题解:2和3是可以直接进行钓鱼不需要鱼饵,0是有鱼饵就进行钓鱼,1是可以制作鱼饵也可以钓鱼。那情况就变成只需要考虑1的处理。可以对1进行一个记录,在遇到0时,前面有1的话减去一个1,最后对1的个数/2。
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int main(){
int T;
scanf("%d",&T);
while(T--){
int N;
scanf("%d",&N);
char t;
int n=0,bait=0,fish=0;
while(n<N){
t = getchar();
if(t<'0'||t>'9') continue;
if(t=='0'){
if(bait>0){
fish++;
bait--;
}
}
if(t=='1'){
bait++;
}
if(t=='2'||t=='3'){
fish++;
}
n++;
}
printf("%d\n",fish+(bait/2));
}
return 0;
}