您的位置:首页 > 编程语言 > Java开发

Hdu1234-开门人和关门人

2016-09-24 02:21 141 查看

开门人和关门人

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 15002 Accepted Submission(s): 7692

[align=left]Problem Description[/align]
每天第一个到机房的人要把门打开,最后一个离开的人要把门关好。现有一堆杂乱的机房签

到、签离记录,请根据记录找出当天开门和关门的人。

[align=left]Input[/align]
测试输入的第一行给出记录的总天数N ( > 0 )。下面列出了N天的记录。

每天的记录在第一行给出记录的条目数M ( > 0 ),下面是M行,每行的格式为

证件号码 签到时间 签离时间

其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串。

[align=left]Output[/align]
对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔。

注意:在裁判的标准测试输入中,所有记录保证完整,每个人的签到时间在签离时间之前,

且没有多人同时签到或者签离的情况。

[align=left]Sample Input[/align]

3
1
ME3021112225321 00:00:00 23:59:59
2
EE301218 08:05:35 20:56:35
MA301134 12:35:45 21:40:42
3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40


[align=left]Sample Output[/align]

ME3021112225321 ME3021112225321
EE301218 MA301134
SC3021234 CS301133


import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t-->0){
int n = sc.nextInt();
info []a = new info
;
for(int i=0;i<n;i++){
String id = sc.next();
String start = sc.next();
String end = sc.next();
a[i] = new info(id,start,end);
}
String startId=a[0].getId();
String endId=a[0].getId();
int st=a[0].getTimeStart();
int et=a[0].getTimeEnd();
for(int i=1;i<n;i++){
if(a[i].getTimeStart()<st){
st=a[i].getTimeStart();
startId = a[i].getId();
}
if(a[i].getTimeEnd()>et){
et=a[i].getTimeEnd();
endId = a[i].getId();
}
}
System.out.println(startId+" "+endId);
}
}

}
class info{
private String id;
private String start;
private String end;
private int timeStart;
private int timeEnd;
private String[] strs1;
private String[] strs2;
public info(String id,String start,String end){
this.id = id;
this.start =start;
this.end = end;
strs1 = start.split(":");
strs2 = end.split(":");
timeStart = Integer.parseInt(strs1[0])*60*60+Integer.parseInt(strs1[1])*60+Integer.parseInt(strs1[2]);
timeEnd = Integer.parseInt(strs2[0])*60*60+Integer.parseInt(strs2[1])*60+Integer.parseInt(strs2[2]);
}
public String getId() {
return id;
}
public int getTimeStart() {
return timeStart;
}
public int getTimeEnd() {
return timeEnd;
}

}
平时很少用类做Hdu的题目~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息