PAT A1017 Queueing at Bank ——茅檐低小,溪上青青草

2024-02-14 06:40

本文主要是介绍PAT A1017 Queueing at Bank ——茅檐低小,溪上青青草,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PAT A1017 Queueing at Bank

  • 跟之前有道银行排队的题一样,也是循环中每次找到最早完事的窗口然后扔过去一个等着的人(当然也可能是窗口等人)
  • 每次做这种题最讨厌那个等待时间单位是分钟,累加,比较,输出都要注意单位对不对。。。
  • 本次出现的问题:1.单位转换;2.win_endTime初始化失败,以后除了0还是老老实实用fill;3.如果是窗口等人,那这段时间也要累加到win_endTime里面
  • 最后,本题没有无人到来的测试点,而且只考虑来晚了的不让进,但不会驱逐规定时间过来但需要等一万年的人 —— 关于这点书上说的不对,因为他的INF给了一个很大的数,所以当win_endTime超过17点依然可以继续工作,而我的INF刚好17点,所以最后一个测试点挂了,后来把min取为INF + INF就过了
  • 在这里插入图片描述
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <stack>using namespace std;#define INF (17 * 60 * 60)struct Custom{int arr_time,need_time,wait_time,serve_time;
};
vector<Custom> vc;
int win_endTime[101] = {0};bool cmp(Custom c1,Custom c2){return c1.arr_time < c2.arr_time;
}#define DEBUG int main(){#ifdef DEBUGfreopen("1.txt","r",stdin);	
#endifint num,win_num;cin >> num >> win_num;for(int i = 0;i < num;i ++){Custom tmp;int HH,MM,SS;scanf("%02d:%02d:%02d %d",&HH,&MM,&SS,&tmp.need_time);tmp.arr_time = HH * 3600 + MM * 60 + SS;if(tmp.arr_time > INF) continue;if(tmp.need_time > 60) tmp.need_time = 60;vc.push_back(tmp);}sort(vc.begin(),vc.end(),cmp);int cnt = 0;int sum_wait = 0;fill(win_endTime,win_endTime + win_num,(8 * 3600));while(cnt < vc.size()){int min = INF + INF,min_i = 0;for(int i = 0;i < win_num;i ++){if(win_endTime[i] < min){min = win_endTime[i];min_i = i;}}vc[cnt].serve_time = max(vc[cnt].arr_time,win_endTime[min_i]);vc[cnt].wait_time = vc[cnt].serve_time - vc[cnt].arr_time;sum_wait += vc[cnt].wait_time;if(vc[cnt].serve_time > win_endTime[min_i]) win_endTime[min_i] = vc[cnt].serve_time;win_endTime[min_i] += vc[cnt].need_time * 60;cnt ++;}printf("%.1lf",(double)(sum_wait / 60.0 / vc.size()));return 0;
}

这篇关于PAT A1017 Queueing at Bank ——茅檐低小,溪上青青草的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/707786

相关文章

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

DDR的Controller、Channel、Chip、Rank、Bank、Row、Column、Sided、Dimm

目录 概览 1.概览             先从半导体生产开始,生产出来还没切割的叫晶圆(wafer)。切割出来还没封装的叫裸die(bare die)。封装好的叫颗粒(component)。做成内存条后叫模组(module)。下文我们也会按这样的称呼去区分。 2.Controller(内存控制器)         一开始内存控制器在主板上有独立的芯片;在英特尔微处理器

PAT (Advanced Level) Practice

1001:  题目大意: 计算 a+b 的结果,并以标准格式输出——即每三个数字一组,组之间用逗号分隔(如果数字少于四位,则不需要逗号分隔)  解析: 我们知道相加右正有负,对于样例来说 Sample Input: -1000000 9 Sample Output: -999,991 如果是从左往右,算上负号的话输出应该是-99,999,1 从右往左:-,999,991离正确

Shared memory bank conflicts

共享内存和bank: 在CUDA架构中,共享内存是一个非常快速的内存类型,它位于每个线程块内部并为该线程块内的所有线程提供服务。为了实现高吞吐量的访问,共享内存被划分为多个独立的存储区域,称为“banks”。每个bank可以在单个时钟周期内独立地服务一个线程。 Shared memory 共享内存 「CUDA ON ARM」如何避免共享内存 Bank conflict - 知乎 (zhihu

1050 String Subtraction——PAT甲级

Given two strings S1​ and S2​, S=S1​−S2​ is defined to be the remaining string after taking all the characters in S2​ from S1​. Your task is simply to calculate S1​−S2​ for any given strings. However,

HDU1114:Piggy-Bank(完全背包)

/*HDU1114 &&POJ1384:Piggy-Bank(完全背包)Problem DescriptionBefore ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from

Piggy-Bank 完全背包问题

http://acm.hdu.edu.cn/showproblem.php?pid=1114 完全背包求最小值 常规解法超时(没优化) #include<iostream>#include<cstring>#include<algorithm>#include<cstdlib>#include<vector>#include<cmath>#include<stdlib.h>#includ

AD9162数据链路lanes与FPGA高速BANK引脚交叉相连导致vivado编译失败

问题概述 对AD9162芯片进行功能开发时,发现AD9162的链路lanes与FPGA的高速BANK引脚存在交叉相连的情况,按照实际的引脚连接关系进行约束后,vivado编译失败。 问题阐述及原因分析 问题详情阐述 板卡对AD9162芯片进行功能开发时,发现硬件电路的设计结果存在AD9162数据链路与FPGA高速BANK引脚交叉相连的问题,示意图如图3‑1,若根据图示的引脚连接关系进行

SDUTOJ 2167 Mathman Bank 第二届ACM省赛题 模拟

Mathman Bank Time Limit: 1000MS Memory limit: 65536K 题目描述  With the development of mathmen's mathematics knowlege, they have finally invented computers. Therefore, they want to use co