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;
}

浙公网安备 33010602011771号