日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

到天宫做客(洛谷P1178题题解,Java语言描述)

發(fā)布時間:2025/3/15 java 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 到天宫做客(洛谷P1178题题解,Java语言描述) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目要求

題目鏈接

分析

早期代碼大概是這么寫的,先是用了Date,結(jié)果連樣例都過不去,就換了日期數(shù)組自己做,還是不對。

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);} }

后面發(fā)現(xiàn)問題主要是在兩個日子相減的時候應(yīng)該額外減一,而如果是在已經(jīng)乘上時分秒之后減一其實是減了一秒,就會錯。

所以應(yīng)該把Set里的時間改成int,最后乘以時分秒。

特別強調(diào):最后的運算一定不要直接整數(shù)運算或是截斷取整,一定要使用浮點運算,四舍五入:System.out.printf("%.0f", max_time_slot243600/366.0);

提供兩組測試數(shù)據(jù):

測試數(shù)據(jù)3
in
0
out
86400

測試數(shù)據(jù)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);} }

總結(jié)

以上是生活随笔為你收集整理的到天宫做客(洛谷P1178题题解,Java语言描述)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。