国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > HDU ACM 1103 Flo's Restaurant

HDU ACM 1103 Flo's Restaurant

来源:程序员人生   发布时间:2015-05-14 09:08:31 阅读次数:3759次

分析:借助STL的min_element实现。每次更新最早被占用的桌子,具体见注释。

#include<iostream> #include<algorithm> using namespace std; int main() { int A,B,C; char s[10]; int a[102],b[102],c[102]; int curtime,count,ans; int *p; //桌子最早空闲时间 while(cin>>A>>B>>C,A+B+C) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); ans=0; while(cin>>s && s[0]!='#') { curtime=(s[0]-'0')*10+(s[1]-'0'); curtime=curtime*60+(s[3]-'0')*10+(s[4]-'0'); cin>>count; if(count==1||count==2) { p=min_element(a,a+A); //获得最小值(也即桌子的最早空余时间) if(*p<=curtime+30) //顾客等30分钟后是不是有坐位 { if(*p<=curtime) *p=curtime+30; //最早被占用的桌子的顾客已离开了,新顾客可以入坐 else *p+=30; //新顾客还需等待 ans+=count; } } if(count==3||count==4) { p=min_element(b,b+B); //获得最小值(也即桌子的最早空余时间) if(*p<=curtime+30) //顾客等30分钟后是不是有坐位 { if(*p<=curtime) *p=curtime+30; //最早被占用的桌子的顾客已离开了,新顾客可以入坐 else *p+=30; //新顾客还需等待 ans+=count; } } if(count==5||count==6) { p=min_element(c,c+C); //获得最小值(也即桌子的最早空余时间) if(*p<=curtime+30) //顾客等30分钟后是不是有坐位 { if(*p<=curtime) *p=curtime+30; //最早被占用的桌子的顾客已离开了,新顾客可以入坐 else *p+=30; //新顾客还需等待 ans+=count; } } } cout<<ans<<endl; } return 0; }


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生