• 【PAT甲级】1095 Cars on Campus (30 分)


    题意:
    输入两个正整数N和K(N<=1e4,K<=8e4),接着输入N行数据每行包括三个字符串表示车牌号,当前时间,进入或离开的状态。接着输入K次询问,输出当下停留在学校里的车辆数量。最后一行输出总计停留时间最长的车牌号(字典序升序输出)和停留总时。

    AAAAAccepted code:

    //因为一天只有86400秒,所以可以用一个car数组在统计车辆停留时间时在进入时间+1,离开时间-1。再用一个sum数组扫一遍,sum[i]=sum[i-1]+car[i],即可表示当下时间有多少辆车还在停留在校园内。

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 map<string,int>mp;
     5 vector<pair<string,int> >v[10007];
     6 int sum[100007],car[100007];
     7 int t[10007];
     8 map<int,string>id;
     9 vector<string>name;
    10 int a[17];
    11 void clear(string&s){
    12     string ss;
    13     swap(s,ss);
    14 }
    15 int main(){
    16     ios::sync_with_stdio(false);
    17     cin.tie(NULL);
    18     cout.tie(NULL);
    19     int n,k;
    20     cin>>n>>k;
    21     int cnt=0;
    22     for(int i=1;i<=n;++i){
    23         string s;
    24         cin>>s;
    25         string t;
    26         cin>>t;
    27         string f;
    28         cin>>f;
    29         if(!mp[s])
    30             mp[s]=++cnt;
    31         id[mp[s]]=s;
    32         int flag=0;
    33         if(f[0]=='i')
    34             flag=1;
    35         v[mp[s]].push_back({t,flag});
    36     }
    37     for(int i=1;i<=cnt;++i){
    38         sort(v[i].begin(),v[i].end());
    39         string now;
    40         int flag=0;
    41         for(int j=0;j<v[i].size();++j){
    42             if(v[i][j].second==1){
    43                 now=v[i][j].first;
    44                 flag=1;
    45             }
    46             else{
    47                 if(flag){
    48                     string tamp=v[i][j].first;
    49                     int start=(now[0]-'0')*36000+(now[1]-'0')*3600+(now[3]-'0')*600+(now[4]-'0')*60+(now[6]-'0')*10+(now[7]-'0');
    50                     int over=(tamp[0]-'0')*36000+(tamp[1]-'0')*3600+(tamp[3]-'0')*600+(tamp[4]-'0')*60+(tamp[6]-'0')*10+(tamp[7]-'0');
    51                     ++car[start];
    52                     --car[over];
    53                     flag=0;
    54                     clear(now);
    55                     t[i]+=over-start;
    56                 }
    57             }
    58         }
    59     }
    60     sum[0]+=car[0];
    61     for(int i=0;i<86400;++i)
    62         sum[i]=sum[i-1]+car[i];
    63     for(int i=1;i<=k;++i){
    64         string tamp;
    65         cin>>tamp;
    66         int tt=(tamp[0]-'0')*36000+(tamp[1]-'0')*3600+(tamp[3]-'0')*600+(tamp[4]-'0')*60+(tamp[6]-'0')*10+(tamp[7]-'0');
    67         cout<<sum[tt]<<"
    ";
    68     }
    69     int mx=0;
    70     for(int i=1;i<=cnt;++i)
    71         mx=max(mx,t[i]);
    72     for(int i=1;i<=cnt;++i)
    73         if(mx==t[i])
    74             name.push_back(id[i]);
    75     sort(name.begin(),name.end());
    76     for(int i=0;i<name.size();++i)
    77         cout<<name[i]<<" ";
    78     a[1]=mx/36000;
    79     mx%=36000;
    80     a[2]=mx/3600;
    81     mx%=3600;
    82     a[3]=mx/600;
    83     mx%=600;
    84     a[4]=mx/60;
    85     mx%=60;
    86     a[5]=mx/10;
    87     mx%=10;
    88     a[6]=mx;
    89     cout<<a[1]<<a[2]<<":"<<a[3]<<a[4]<<":"<<a[5]<<a[6];
    90     return 0;
    91 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    2017年0406------如何使用sessionStroage来储存参数是对象的,以及localStorage和sessionStorage的不同地方
    json格式和对象类型的转换20170330
    严重报错: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis
    201703-28工作笔记:复杂的背景问题
    @Inject
    @Controller
    Mybatis
    Mybatis P2 总结
    小结--limit注入
    小结--order by 注入
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11913513.html
Copyright © 2020-2023  润新知