zoukankan      html  css  js  c++  java
  • 1006 Sign In and Sign Out (25分)

    解法一:排序

    struct Stu {
        string id;
        string start_time;
        string end_time;
    };
    vector<Stu> v;
    int n;
    
    bool cmp1(Stu &a,Stu &b)
    {
        return a.start_time<b.start_time;
    }
    
    bool cmp2(Stu &a,Stu &b)
    {
        return a.end_time>b.end_time;
    }
    
    int main()
    {
        cin>>n;
    
        for(int i=0;i<n;i++)
        {
            string a,b,c;
            cin>>a>>b>>c;
            v.pb({a,b,c});
        }
    
        sort(v.begin(),v.end(),cmp1);
        cout<<v[0].id;
    
        sort(v.begin(),v.end(),cmp2);
        cout<<' '<<v[0].id<<endl;
    
        //system("pause");
        return 0;
    }
    

    解法二:线性扫描即可,string是按字典序大小比较的

    int n;
    
    int main()
    {
        cin>>n;
    
        string open_id,open_time;
        string close_id,close_time;
        for(int i=0;i<n;i++)
        {
            string id,come_time,leave_time;
            cin>>id>>come_time>>leave_time;
    
            if(!i || come_time < open_time)
            {
                open_time = come_time;
                open_id = id;
            }
    
            if(!i || leave_time > close_time)
            {
                close_time = leave_time;
                close_id = id;
            }
        }
    
        cout<<open_id<<' '<<close_id<<endl;
    
        //system("pause");
        return 0;
    }
    

    解法三;常规做法。

    struct Node
    {
        char id[N];
        int hh,mm,ss;
        bool operator<(const Node &W) const
        {
            if(hh == W.hh)
            {
                if(mm == W.mm) return ss<W.ss;
                else return mm<W.mm;
            }
            else return hh<W.hh;
        }
    }cur,earliest,latest;
    int n;
    
    void init()
    {
        earliest.hh=23,earliest.mm=59,earliest.ss=59;
        latest.hh=0,latest.mm=0,latest.ss=0;
    }
    
    int main()
    {
        init();
    
        cin>>n;
    
        for(int i=0;i<n;i++)
        {
            scanf("%s %d:%d:%d",cur.id,&cur.hh,&cur.mm,&cur.ss);
            if(cur < earliest) earliest=cur;
    
            scanf("%d:%d:%d",&cur.hh,&cur.mm,&cur.ss);
            if(latest < cur)  latest=cur;
        }
    
        cout<<earliest.id<<' '<<latest.id<<endl;
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    CSS基础知识点
    HTML回顾
    stringbuffer与stringbuilder与String
    事务的概念与使用
    大数据处理对象CLOG BLOG
    小却常用的小知识点和技巧
    视图
    移位运算符
    规范化与范式
    聚集索引和非聚集索引
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14223025.html
Copyright © 2011-2022 走看看