很水的其实,开始在看最后一题,没想做这个,或者说开始想的太复杂。也不能证明正确性,就放下了
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
const int N=2e5+20;
char s[N];
int main()
{
int t;
//ios::sync_with_stdio(false);
cin>>t;
while(t--)
{
int n;
scanf("%d",&n);
memset(s,0,sizeof(s));
scanf("%s",s);
int ans=0;
for(int i=0; i<n; i++)
{
if(s[i]=='C'&&s[i+1]=='C'&&s[i+2]=='P'&&s[i+3]=='C')ans++;
}
//cout<<ans<<endl;
for(int i=0; i<n; i++)
{
int flag=0;
if(s[i]=='C'&&s[i+1]=='P'&&s[i+2]=='C')
{
if(i-1<0||s[i-1]!='C')flag++;
}
if(s[i]=='C'&&s[i+1]=='C'&&s[i+2]=='P'&&s[i+3]!='C')flag++;
if(s[i]=='C'&&s[i+1]=='C'&&s[i+2]=='C')
{
if(s[i+3]=='P'&&s[i+4]=='C')flag--;
flag++;
}
if(flag)
{
ans++;
break;
}
}
printf("%d\n",ans);
}
return 0;
}
/*
10
3
CCC
5
CCCCP
4
CPCP
10
CCPCCPCCPC
9
CCPCCPCPC
9
CCPPCPCPC
*/