2021级DP题单 - Virtual Judge (vjudge.net)
女只要在男后面就换
char s[1000000+10];int len;
int M[1000000+10],mx[1000000+10],maxans;
/*
思维好题
找规律
每个女生至少交换{前面男生个数}次
当这个女生前面有女生,至少交换{最近女生次数+1}次
简单证明:
当男生很多时,前面的女生有很大机会被交换走,故不会影响后面的女生每次和男生交换
当女生很多,如果尸相邻,那么必须等前面女生换走了她才能走,ans=beforeans+1
拓展,当前面有不相邻的女生,这个女生不断地向前走,总有一个时刻,和前面的女生碰上
那就和上面一样了
*/
int main()
{
// freopen("makeans.txt","r",stdin);
// freopen("fire.out","w",stdout);
scanf("%s",s);
int n=strlen(s);
int ans=0;
int c=0;
for(int i=0;i<n;i++)
{
if(s[i]=='M')
{
c++;
}
else
{
ans=max(ans+1,c);
}
}
chu("%d",ans);
return 0;
}