Educational Codeforces Round 42 (Rated for Div. 2) B. Students in Railway Carriage
一开始想复杂了。
其实很简单。就挨着扫一遍,每次优先排数量大的,然后交替排就好了
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{ char s[200005];
int tot[100005]={0};
int n,a,b;
cin>>n>>a>>b;
int i,j;
for(i=0;i<n;i++)
{
cin>>s[i];
}
int flag;//flag=1,放a,否则放b
if(a>b) flag=1;
else flag=0;
int ans=0;
for(i=0;i<n;i++)
{
if(s[i]=='.'&&a>0&&b>0)
{
if(flag==1)
{
a--;
ans++;
flag=0;
}
else
{
b--;
ans++;
flag=1;
}
}
else if(s[i]=='.'&&a>0&&b==0)
{
a--;
i++;
ans++;
}
else if(s[i]=='.'&&a==0&&b>0)
{
b--;
i++;
ans++;
}
else if(s[i]=='*')//如果遇到*,重新比较ab大小
{
if(a>b) flag=1;
else flag=0;
}
}
printf("%d\n",ans);
return 0;
}

浙公网安备 33010602011771号