acw3700. 女士优先(贪心)
作者:互联网
题意:
程序员排队。假设现在的队列是这样的:MFM
。
从左往右,第一位是男程序员(Male
),第二位是女程序员(Female
),第三位是一位男程序员。
只要一位男程序员发现自己后面是一位女程序员,他就会和这位女程序员交换位置,这样的交换需要消耗一秒。
同一秒内可能会有多位男程序员和自己后面的女程序员交换位置。
问最少要多长时间,队伍不再变动。
思路:
const int N = 1e5 + 5;
int n, cntM, wait, ans;
char s[N];
main()
{
cin >> s + 1; n = strlen(s + 1);
for(int i = 1; i <= n; i++)
if(s[i] == 'M') cntM++, wait = max(wait-1, 0);
else ans = wait + cntM, wait++;
cout << ans;
}
标签:题意,女士优先,int,题解,交换,一位,程序员,acw3700,贪心 来源: https://www.cnblogs.com/wushansinger/p/15966823.html