找规律
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; }