非洲小孩
時間限制:1000 ms | 內存限制:65535 KB
難度:2
- 描述
- 家住非洲的小孩,都很黑。爲什麼呢?
第一,他們地處熱帶,太陽輻射嚴重。
第二,他們不經常洗澡。(常年缺水,怎麼洗澡。)
現在,在一個非洲部落裏,他們只有一個地方洗澡,並且,洗澡時間很短,瞬間有木有!!(這也是沒有的辦法,缺水啊!!)
每個小孩有一個時間段能夠洗澡。並且,他們是可以一起洗的(不管你是男孩是女孩)。
那麼,什麼時間洗澡,誰應該來洗,由誰決定的呢?那必然是他們偉大的“澡”神啊。“澡”神有一個時間表,記錄着該部落的小孩,什麼時候段可以洗澡。現在,“澡”神要問你,一天內,他需要最少開啓和關閉多少次洗澡的水龍頭呢?因爲,開啓和關閉一次水龍頭是非常的費力氣的,即便,這也是瞬間完成的。
- 輸入
- 多組數據
第一行一個0<n<=100。
接下來n行,每行一個時間段。H1H1:M1M1-H2H2:M2M2,24小時制。
保證該時間段是在一天之內的。但是,不保證,H1H1:M1M1先於H2H2:M2M2。 - 輸出
- 題目描述,“澡”神最少需要開啓和關閉多少次水龍頭呢?
- 樣例輸入
-
1 00:12-12:12 2 00:12-12:12 14:00-12:00
- 樣例輸出
-
1 1
- 提示
- Ps:開啓和關閉爲一次
- 上傳者
區間選點問題 ,和 找點 的思路一樣。
*****洗澡和開水龍頭都是瞬間完成。
public class _1036_2AC {
public static void main(String[] args) {
Scanner scan = new Scanner(new BufferedInputStream( System.in));
int testNum,left,right;
int[][] times;
String data;
int number = 1;
while(scan.hasNext()){
testNum = scan.nextInt();
times = new int[testNum][2];
for(int i = 0; i < testNum; ++i){
data = scan.next();
data = data.replace(':', '0');
left = Integer.parseInt(data.split("-")[0]);
right = Integer.parseInt(data.split("-")[1]);
if(left < right){
times[i][0] = left;
times[i][1] = right;
}else{
times[i][1] = left;
times[i][0] = right;
}
}
int temp;
for(int i = 0; i < times.length-1; ++i){
for(int j = i+1; j < times.length; ++j){
if(times[j][0] < times[i][0] || (times[j][0] == times[i][0] && times[j][1] < times[i][1])){
temp = times[i][0];
times[i][0] = times[j][0];
times[j][0] = temp;
temp = times[i][1];
times[i][1] = times[j][1];
times[j][1] = temp;
}
}
}
int max = times[0][1];
for(int i = 1; i < times.length; ++i){
if(times[i][0] > max){
++number;
max = times[i][1];
}else{
if(times[i][1] < max){
max = times[i][1];
}
}
}
System.out.println(number);
number = 1;
}
}
}