国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

1017. Queueing at Bank 解析

2019-11-14 12:38:28
字體:
來源:轉載
供稿:網(wǎng)友

注意:后面來的顧客是有可能不用排隊的。 比如11:00顧客沒有了13:00來人了是不用排隊的。

在選取窗口的時候方法和之前那個1014的選擇方法不同。注意對比。

#include <iostream>#include <vector>#include <algorithm>#include <string>#include <map>#include <queue>using namespace std;struct Node{	string time;	int p;};int char2int(char c) {	return int(c) - int('0');}int str2int(string s) {	return (char2int(s[0]) * 10 + char2int(s[1])) * 3600 + (char2int(s[3]) * 10 + char2int(s[4])) * 60 + (char2int(s[6]) * 10 + char2int(s[7]));}bool cmp(Node N1, Node N2) {	if (str2int(N1.time) < str2int(N2.time))		return true;	return false;}int FindWin(queue <Node> * window, int K) { //找最優(yōu)窗口	int minI = 0;	int minSize = window[0].size();	for (int i = 0; i < K; i++) {		if (minSize > window[i].size()) {			minSize = window[i].size();			minI = i;		}	}	return minI;}int DeWin(queue <Node> * window, int K) { //窗口出隊	int minI = 0;	int minTime = window[0].front().p;	for (int i = 0; i < K; i++) {		if (minTime > window[i].front().p) {			minTime = window[i].front().p;			minI = i;		}	}	for (int i = 0; i < K; i++) { //出隊		if (minTime == window[i].front().p)			window[i].pop();	}	return minI;}int main( ){	int N, K;	cin >> N >> K;			vector <Node> tempNV;	Node tempN;		int TrueNum = 0;	for (int i = 0; i < N; i++) {		cin >> tempN.time >> tempN.p;		if (str2int(tempN.time) <= 17 * 3600) {			TrueNum++;			if (tempN.p > 60)				tempN.p = 60;			tempNV.push_back(tempN);		}			}	N = TrueNum;	Node * List = new Node[N];	for (int i = 0; i < N; i++) {		List[i] = tempNV[i];	}		sort(List, List + N, cmp);	int * time = new int[N];//服務時間	int * winTime = new int[K];//窗口計時	int startTime = 8 * 3600; //開始時間	int endTime = 17 * 3600 ; //結束時間	int Num = 0;	for (int i = 0; i < K; i++) {		winTime[i] = startTime;	}				int SumWait = 0; //等待總時間	int tempWin = 0; //選擇窗口		queue <Node> * window = new queue<Node>[K];	for (int i = 0; i < N; i++) {		time[i] = str2int(List[i].time); //到達時間		//tempWin = FindWin(window, K);		//if (window[tempWin].size() < 1) {		//	window[tempWin].push(List[i]);		//}		//else {		//	tempWin = DeWin(window, K);		//	window[tempWin].push(List[i]);		//}		int Min = winTime[0];		tempWin = 0;		for (int i = 0; i < K; i++) {			//cout << winTime[i] << " ";			if (Min > winTime[i]) {				Min = winTime[i];				tempWin = i;			}		}		//cout << endl;		//cout << tempWin << endl;						if (winTime[tempWin] <= time[i]) {//窗口上次服務結束時間小于到達時間 無需等待			winTime[tempWin] = time[i] + List[i].p * 60;		}		else{ //需要等待			SumWait += (winTime[tempWin] - time[i]);			winTime[tempWin] += List[i].p * 60;		}		//cout << "win = " << tempWin << endl;		//cout << List[i].time << " " << List[i].p << endl;		//cout << "WIN: " << winTime[tempWin] << " Arrive:" << time[i] << endl;		//cout << SumWait << endl;		//cout << endl;	}//	cout << SumWait << endl;	if (N <= 0) cout << "0.0" << endl;	else {		float average = SumWait / 60.0 / TrueNum;		PRintf("%.1f", average);		cout << endl;	}	return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 张家港市| 汕头市| 东乌珠穆沁旗| 前郭尔| 兴业县| 五原县| 澄城县| 婺源县| 巧家县| 兴隆县| 静乐县| 保德县| 若羌县| 中宁县| 张掖市| 临泽县| 肥西县| 阳原县| 名山县| 平顶山市| 庆安县| 大石桥市| 奈曼旗| 夏邑县| 东宁县| 保靖县| 桑日县| 塘沽区| 江源县| 白河县| 襄汾县| 龙海市| 大埔县| 南陵县| 乌恰县| 化州市| 尖扎县| 宁安市| 马鞍山市| 聂拉木县| 松江区|