CF353D Queue

来源:互联网 发布:java 后端开发 知乎 编辑:程序博客网 时间:2024/05/06 09:33

思路好题

对于一个女孩,设前一个女孩运动时间为0,如果她在停止运动前能追上前面的女孩,则运动时间为ans+1;否则她一直在男生交换位置,运动时间为cnt,cnt为前面男生个数。则这个女孩的运动时间为max(ans+1,cnt)。最终答案为最后一个女孩运动时间。

看完题解的我内牛满面…






#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define F(i,j,n) for(int i=j;i<=n;i++)#define D(i,j,n) for(int i=j;i>=n;i--)#define ll long long#define maxn 1000005using namespace std;int n,t=1,ans,cnt;char s[maxn];int main(){scanf("%s",s+1);n=strlen(s+1);while (t<=n&&s[t]=='F') t++;F(i,t,n){if (s[i]=='M') cnt++;else ans=max(ans+1,cnt);}printf("%d\n",ans);return 0;}


0 0
原创粉丝点击