银行排队问题之单窗口“夹塞”版(pta)

本文探讨了PTA平台上的银行排队问题,重点在于单窗口处理时如何解决“夹塞”现象。通过使用并查集确定顾客归属,并依据顾客到达与离开时间,确定服务顺序。在实现过程中,作者遇到使用map<string, int>超时的问题,改用map<char*, int>并重载相关操作,以此提高效率。文中强调,使用char*时,实际参与映射的是指针,而非string对象,这一细节对于解决问题至关重要。" articleid,blogid,新标题,新标签,新关键词,新摘要 126820047,15392247,用户侧柔性负荷在综合能源系统优化调度中的应用,"['能源系统', 'matlab', '开发语言', '调度优化', '柔性负荷管理']
摘要由CSDN通过智能技术生成

传送门:

https://pta.patest.cn/pta/test/15/exam/4/question/895


思路:先用并查集确定各个顾客(结点)的父亲,然后依次处理进来的顾客,对每个顾客(A),
找到和他同一个结点的并且离他最近的(B)(输入顺序),看这个结点(B)的开始时间是否小于等于前面顾客的(A)结束时间,
如果是,那这个顾客(B)作为下一个进来的顾客,否则,(除去已经处理过的)最前面的结点作为下一个顾客结点。
在顾客名字的处理上,我借用了map映射,但是map<string,int>这种形式会超时,然后用了map<char*,int>,
在网上查了几篇博客,说要先重载,具体的看下面代码。
我做完后回过头来看到一句话特别有感悟,就是用char*做map参数时,实际参与映射的是指针,而用string时传进去的是一个对象。
所以处理的时候,需要注意一下,具体的还是看下面代码。


1  	#include<cstdio>
2  	#include<iostream>
3  	#include<cstring>
4  	#include<map>
5  	using namespace std;
6  	struct ptrCmp//写一个比较函数,里面重载(),这一段是网上原模原样看过来的
7  	{
8  		bool operator()(const char*s1,const char*s2)const//结尾有个const,别丢&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值