abc 365D
作者:
Air1222
,
2024-09-26 22:02:16
,
所有人可见
,
阅读 3
//按照题目描述转移即可
//注意非法状态表示为负无穷,表示不能转移
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
const int N = 2e5+10;
int f[N][5];
int n;
char s[N];
map<char,int>m;
int main()
{
m['R']=0,m['P']=1,m['S']=2;
cin>>n;
scanf("%s",s+1);
for(int i=1;i<=n;i++)
{
int p=m[s[i]];
f[i][p]=max(f[i-1][(p+1)%3],f[i-1][(p+2)%3]);
f[i][(p+1)%3]=max(f[i-1][(p+2)%3],f[i-1][(p+3)%3])+1;
f[i][(p+2)%3]=-1e9;
}
cout<<max(f[n][0],max(f[n][1],f[n][2]));
return 0;
}