美团笔试题——公司食堂

公司食堂

http://www.nowcoder.com/questionTerminal/601815bea5544f389bcd20fb5ebca6a8

美团笔试题——公司食堂
原理:小根堆,利用优先队列实现。设置seat0和seat1两个优先队列,存放位置为0和1的餐桌号,因小根堆特性,队首为最小值,即较左端餐桌位置。
本题卡endl,改为'\n'换行符输出即AC。endl会刷新输出流缓冲区,多行输出会导致刷新缓冲区过于频繁,导致超时问题。

#include<bits/stdc++.h>
#include<list>
using namespace std;

int main()
{
    int T,N;
    cin>>T;
    while(T--)
    {
        cin>>N;
        string str_seat;
        cin>>str_seat;
        priority_queue<int,vector<int>,greater<int>> seat0;
        priority_queue<int,vector<int>,greater<int>> seat1;
        for(int i = 0; i < N; i++)
        {
            if('0' == str_seat[i])
            {
                seat0.push(i+1);
            }
            else if('1' == str_seat[i])
            {
                seat1.push(i+1);
            }
        }
        int m;
        cin>>m;
        cin>>str_seat;
        for(int i = 0; i < m; i++)
        {
            if(str_seat[i] == 'M')
            {
                if(!seat1.empty()){
                    int f = seat1.top();
                    cout<<f;
                    seat1.pop();
                }
                else if(!seat0.empty()){
                    int f = seat0.top();
                    cout<<f;
                    seat0.pop();
                    seat1.push(f);
                }
            }
            else if(str_seat[i] == 'F')
            {
                if(!seat0.empty()){
                    int f = seat0.top();
                    cout<<f;
                    seat0.pop();
                    seat1.push(f);
                }
                else if(!seat1.empty()){
                    int f = seat1.top();
                    cout<<f;
                    seat1.pop();
                }
            }
        }
    }
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 14:10
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:30
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:16
点赞 评论 收藏
分享
评论
14
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务