清北首页 数学频道 物理频道 化学频道 生物频道 信息学频道 自主招生 师资培训在线答疑咨询热线010-88400806

国际金牌高逸涵IOI2009Garage解题报告(Day2)

2009年12月10日 来源:本站原创

题目叙述
一个停车场里面有N个停车位,编号从1到N。停车场每天开始时是空的然后按照如下规则操作:当一辆车到达停车场的时候,员工检查停车场是否有空车位,如果没有,这辆车会停留在入口直到一个停车位空出来。如果有空停车位,或者直到某个车位空出来了,这辆车会停进那个停车位。如果有多个停车位是空的,这辆车会停在编号最小的车位,如果在有车等待的时候更多的车到达了停车场,他们会按照他们到达的顺序排成一列,然后当有空位出现的时候,队列中的第一辆车会停进那个空位。
停车费用等于车辆的重量乘上停车位的系数,停车费用与停车时间无关。
停车场的操作员知道会有M辆车到达,以及它们到达和离开的顺序。请你帮助他计算停车场能获得的收益。
数据规模
1<=N<=100
1<=M<=2000
解题思路
这个问题的思想就是一个朴素的模拟思想,但其中用到的数据结构却不完全是平凡的。一个简单的不需要任何数据结构的算法应该是遵循如下步骤:
1.对于每辆车,记录他的状态(不在停车场,在队列,在停车位上),他停放的位置(如果它已经停下来),它的到达时间(如果它在队列中)。
2.对于每个停车位,记录它是否是空的。
那么现在就可以对输入事件进行处理,当一辆车到达的时候,在停车位中循环找到最小的空位,如果找到了,将车停放在那里,否则车会进入队列,记录他的到达时间。
当一辆车离开的时候,他将会被队列前端的车替代。在所有车中循环,找到一个仍在队列中且到达时间最早的车,如果找到了,将他停在这个空车位上,并记录他已经不在队列中。
以上算法的时间复杂度为O(M2+MN),它可以通过用一个单独的数组维护队列来优化至O(MN),然后也可以通过将空车位用二叉堆维护以优化至O(MlogN)。但是,不用这些优化也同样可以拿到满分。
 <-->

 

参加了很多培训效果不大?老师的讲课不够透彻?尽管很努力了但是还是收效甚微?或许你正为这些难题困扰,清北学堂资深教育专家为您提供最佳解决方案 ... 去答疑中心咨询联系我们

清北优势

清北学堂是全国知名的以帮助高中生进入清华、北大等国内前十名和国际前一百名大学本科深造学习为宗旨,以培养排名前十名大学专业学科精英为目标的高中优等生专业培训规划咨询机构。自2002年成立以来,清北学堂已培训50000多名学员,其中升入清华、北大等名校的学员超过5000人。卓越的业绩使清北学堂声誉鹊起,在全国各地的重点高中产生了很大的影响力,并与500余所重点高中建立了广泛的全方位多元化的合作关系...

全国首创的高中 7+1课程体系,以"进可奥赛获奖,退可高考高分"为思路... 更多

您是否还有疑问,请填写以下信息,我们会在第一时间答复您

(此信息只有清北学堂客服才能看到,您的所有信息我们都将严格保密,不必担心信息泄露)

您的姓名 请填写您的真实姓名
您的地址 请如实填写您所在的省市、学校等信息
在线联系方式 请填写您QQ或者E-mail
电话 至少填写手机 / QQ / 座机 之中的一种
咨询内容
 
2012年各高校自主招生简章