到天宫做客(洛谷P1178题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
到天宫做客(洛谷P1178题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
題目鏈接
分析
早期代碼大概是這么寫的,先是用了Date,結果連樣例都過不去,就換了日期數組自己做,還是不對。
import java.util.*;public class Main {public static void main(String[] args) {Set<Long> time_set = new TreeSet<>();int[] month_list = {0, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();time_set.add(0L);time_set.add(366L*24*3600);for (int i = 0; i < num; i++) {int temp = month_list[scanner.nextInt()]+scanner.nextInt();time_set.add((temp)*24L*3600);System.out.println(temp); // time_set.add(new Date(4000, scanner.nextInt()-1, scanner.nextInt()).getTime()/1000);}scanner.close();Iterator<Long> iterator = time_set.iterator();long prev = iterator.next(), max_time_slot = 0;while (iterator.hasNext()) {long temp = iterator.next();max_time_slot = Math.max(max_time_slot, temp-prev);prev = temp;}System.out.printf("%.0f", max_time_slot*1.0/366);} }后面發現問題主要是在兩個日子相減的時候應該額外減一,而如果是在已經乘上時分秒之后減一其實是減了一秒,就會錯。
所以應該把Set里的時間改成int,最后乘以時分秒。
特別強調:最后的運算一定不要直接整數運算或是截斷取整,一定要使用浮點運算,四舍五入:System.out.printf("%.0f", max_time_slot243600/366.0);
提供兩組測試數據:
測試數據3
in
0
out
86400
測試數據4
in
1
7 1
out
43200
AC代碼(Java語言描述)
import java.util.*;public class Main {public static void main(String[] args) {Set<Integer> time_set = new TreeSet<>();int[] month_list = {0, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};time_set.add(1);time_set.add(367);Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();for (int i = 0; i < num; i++) {time_set.add(month_list[scanner.nextInt()]+scanner.nextInt());}scanner.close();if (num == 0) {System.out.println("86400");return;}Iterator<Integer> iterator = time_set.iterator();long prev = iterator.next(), max_time_slot = 0;while (iterator.hasNext()) {long temp = iterator.next();max_time_slot = Math.max(max_time_slot, temp-prev-1);prev = temp;}System.out.printf("%.0f", max_time_slot*24*3600/366.0);} }總結
以上是生活随笔為你收集整理的到天宫做客(洛谷P1178题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【项目管理】阿尔法项目经理的时间投入启示
- 下一篇: 【软件工程】实体类的持久性