1095. Cars on Campus
2015-10-28 17:32
417 查看
题意 :
有一个学校,每天会有很多车进出;给出N条车辆进出情况和M条询问每条询问输出当前校园有多少辆车,时间从0点24点 最后输出停留最久的车的车牌号和停留时间, 如果有多个,则按字典序输出车牌号
注意 必须要使得所有数据保证以下情况,否则为无效数据:
1 最开始校园里是没车的
2 最后不能有车停留
3 同一辆车连续多次进入 只有最后一个是正确的
4 同一辆车连续多次出去 只有最开始一个是正确的
题解思路:
用map来记录每一个车牌号的下标首先将所有语句按时间排序 并保存所有询问时间
遍历一次删除不合法语句
再遍历一次 设置一个询问指针
当时间符合要求则输出当前车辆数
用set来保存所有停留最久的车牌号
初解误区:
一开始没有考虑有效数据的情况,最终代码也崩在这里;也没有考虑一车可以多次进入的情况。看来以后要好好读题了。贴一下半成品代码:import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.Scanner; import java.util.Vector; public class hello{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); boolean exitflag = false; Vector<record> vector = new Vector<record>(); scanner.nextLine(); for (int i = 0; i < a; i++) { String string = scanner.nextLine(); String[] temp = string.split(" "); record re = new record(temp[0],temp[1],temp[2]); exitflag = false; for (int j = vector.size() -1; j >= 0; j--) { record rec = vector.get(j); if (rec.plate.equals(re.plate)) { if (re.io.equals("in")) { if (rec.io.equals(re.io)) { rec.time = re.time; System.out.println(re.plate+" "+re.time+" "+re.io); exitflag = true; } } else { if (rec.io.equals(re.io)) { System.out.println(re.plate+" "+re.time+" "+re.io); exitflag = true; } } break; } } if (!exitflag) { vector.add(re); } } for (Iterator iterator = vector.iterator(); iterator.hasNext();) { record record = (record) iterator.next(); System.out.println(record.plate+" "+ record.time); } String nowtime; Vector<record> in = new Vector<record>(); Vector<String> maxplate = new Vector<String>(); int max =0; Iterator iterator = vector.iterator(); record record = null; boolean quitflag = false; boolean firstflag = true; for (int i = 0; i < b; i++) { nowtime = scanner.nextLine(); System.out.println(nowtime); quitflag = false; while(iterator.hasNext()&&!quitflag) { if (!firstflag) { if (record.time.compareTo(nowtime) > 0) { System.out.println(in.size()-1); for (record re : in) { System.out.print(re.plate+" "); } quitflag = true; } else { record = (record) iterator.next(); //System.out.println(record.time); } } else { record = (record) iterator.next(); firstflag = false; } if (!quitflag) { if (record.io.equals("in")) { in.add(record); } else { for (Iterator iterator2 = in.iterator(); iterator2.hasNext();) { record record2 = (record) iterator2.next(); if (record2.plate.equals(record.plate)) { //in.remove(record2); int temp = comp(record.time,record2.time); if (temp > max) { max = temp; maxplate.clear(); maxplate.add(record.plate); } else if (temp == max) { maxplate.add(record.plate); } } } } } } } for (String string : maxplate) { System.out.print(string+" "); } System.out.print(totime(max)); scanner.close(); System.out.println(totime(3670)); } private static int comp(String time, String time2) { // TODO Auto-generated method stub return toint(time2)-toint(time); } public static int toint(String time) { String[] temp = time.split(":"); return Integer.parseInt(temp[0])*3600+Integer.parseInt(temp[1])*60+Integer.parseInt(temp[2]); } private static String totime(int max) { Integer hour = max/3600; Integer minute = max%3600/60; Integer sec = max%60; // TODO Auto-generated method stub return hour.toString()+":"+minute.toString()+":"+sec.toString(); } static class mycompare implements Comparator<record>{ public int compare(record r1, record r2) { if(r1.time.compareTo(r2.time)>0) return 1; else if (r1.time.compareTo(r2.time)<0) { return -1; } else { return 0; } } } static class record { String plate; String time; String io; public record(String plate, String time, String io) { this.io = io; this.plate =plate; this.time = time; // TODO Auto-generated constructor stub } } }
相关文章推荐
- Plugin(插件)和Goals(目标)
- cookie 和session 的区别
- ATL 支持ActiveX控件开发的所实现的接口
- 获取第三方apk的资源文件
- 当你还不能写出自己满意的程序时,你就不要去睡觉。
- hibernate jpa 注解 @Temporal(TemporalType.DATE)
- 进程与线程的区别(转)
- Java NIO系列教程(二) Channel
- JFace开发详解
- MFC单文档及其简介
- 记一个比较诡异的“bug”-快速点击下,ie下面a标签(javascript:void(0))打开新页面
- Gethibernatetemplate的查询更新以及批量操作方法
- JSON对象和字符串转换
- android常识
- 自定义不可滑动的Viewpager
- Material Design - Activity transitions
- UNITY 文件路径整理(偷的)
- 一道易错的题
- Windows系列服务器上配置JSP运行环境,以及网站上线
- MSTest.exe 命令行选项