poj 2424 餐厅与客人
来源:互联网 发布:浙大计算机 专硕 知乎 编辑:程序博客网 时间:2024/04/30 11:01
采用三个数组存放三种桌子最短空闲时间
然后通过简单模拟实现
#include <iostream>#include <vector>#include <map>#include <list>#include <set>#include <deque>#include <stack>#include <queue>#include <algorithm>#include <cmath>#include <cctype>#include <cstdio>#include <iomanip>#include <cmath>#include <cstdio>#include <iostream>#include <string>#include <sstream>#include <cstring>#include <queue>using namespace std;///宏定义const int INF = 20000000;//const int maxn = 10010;const int MAXN = 210;///全局变量 和 函数int A, B, C;int Aleft, Bleft, Cleft;struct dinner{int arrivalTime;int customers;};int str2int(string str){int time = 0;time = (str[4] - '0' + (str[3] - '0') * 10) + (str[1] - '0' + (str[0] - '0') * 10) * 60;return time;}int sum;int tableA[MAXN];int tableB[MAXN];int tableC[MAXN];int minFreeTimeA, minFreeTimeB, minFreeTimeC;int minFreePosA, minFreePosB, minFreePosC;int main(){///变量定义int i, j;while (1){cin >> A >> B >> C;if (A == 0 && B == 0 && C == 0)break;memset(tableA, 0, sizeof(tableA));memset(tableB, 0, sizeof(tableB));memset(tableC, 0, sizeof(tableC));sum = 0;dinner dinners;while (1){string tempstr;cin >> tempstr;if (tempstr == "#")break;dinners.arrivalTime = str2int(tempstr);cin >> dinners.customers;if (dinners.customers <= 2){minFreePosA = 0;minFreeTimeA = tableA[minFreePosA];//每到一位顾客,扫描最先空的桌子,记录最早空时间和对应的桌子编号for (i = 0; i < A; i++){//如果有空桌子直接吃,更新该桌子最早空闲时间if (tableA[i] < dinners.arrivalTime){tableA[i] = dinners.arrivalTime + 30;sum += dinners.customers;break;}if (tableA[i] < minFreeTimeA){minFreeTimeA = tableA[i];minFreePosA = i;}}//如果到达时没有空桌子if (i == A){//如果要等,找下一个找最短时间桌子if (minFreeTimeA <= (dinners.arrivalTime + 30)){minFreeTimeA = minFreeTimeA + 30;tableA[minFreePosA] = minFreeTimeA;sum += dinners.customers;}}}else if (dinners.customers <= 4){minFreePosB = 0;minFreeTimeB = tableB[minFreePosB];//每到一位顾客,扫描最先空的桌子,记录最早空时间和对应的桌子编号for (i = 0; i < B; i++){//如果有空桌子直接吃,更新该桌子最早空闲时间if (tableB[i] < dinners.arrivalTime){tableB[i] = dinners.arrivalTime + 30;sum += dinners.customers;break;}if (tableB[i] < minFreeTimeB){minFreeTimeB = tableB[i];minFreePosB = i;}}//如果到达时没有空桌子if (i == B){//如果要等,找下一个找最短时间桌子if (minFreeTimeB <= (dinners.arrivalTime + 30)){minFreeTimeB = minFreeTimeB + 30;tableB[minFreePosB] = minFreeTimeB;sum += dinners.customers;}}}else if (dinners.customers <= 6){minFreePosC = 0;minFreeTimeC = tableC[minFreePosC];//每到一位顾客,扫描最先空的桌子,记录最早空时间和对应的桌子编号for (i = 0; i < C; i++){//如果有空桌子直接吃,更新该桌子最早空闲时间if (tableC[i] < dinners.arrivalTime){tableC[i] = dinners.arrivalTime + 30;sum += dinners.customers;break;}if (tableC[i] < minFreeTimeC){minFreeTimeC = tableC[i];minFreePosC = i;}}//如果到达时没有空桌子if (i == C){//如果要等,找下一个找最短时间桌子if (minFreeTimeC <= (dinners.arrivalTime + 30)){minFreeTimeC = minFreeTimeC + 30;tableC[minFreePosC] = minFreeTimeC;sum += dinners.customers;}}}}cout << sum << endl;}///结束return 0;}
- poj 2424 餐厅与客人
- 餐厅
- 第一次设置root与禁用客人会话
- QQ餐厅与系统性能模型
- socket通信初级篇——服务员与客人(服务端与客户端)
- 孕妇餐厅
- java swing餐厅点餐系统的设计与实现及源码之Java图形界面餐厅点餐系统的实现
- 客人自便 水浒
- 初四,在家招待客人
- 客人赴宴的礼仪
- 超级客人之VIP
- 超级客人之男人
- 超级客人之女人
- “超级客人”之开篇
- PHPexcel 导入客人名单
- ubuntu 禁用客人会话
- Ubuntu删除客人帐号
- HeadFirst 设计模式 9迭代器与组合模式(餐厅合并)
- Android 关于高仿 WIN8系统磁贴点击下沉倾斜效果的应用说明
- android cocos2d-x引擎优秀文章收集
- UVA 147 Dollars
- 从C到C++
- mysql问题(论坛解决问题收藏)
- poj 2424 餐厅与客人
- Discuz查询标签及带此标签的帖子总数
- C语言List使用样例
- C语言 写文件样例
- C语言 获取系统临时目录并获取临时文件名
- VI的使用
- 一个致命的误会
- 【Cocos2d-x游戏引擎开发笔记(6)】触屏事件与多媒体
- 俞敏洪:青春年华,投资自己