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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

贪婪的送礼者(洛谷P1201题题解,Java语言描述)

發布時間:2025/3/15 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 贪婪的送礼者(洛谷P1201题题解,Java语言描述) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目要求

P1201題目鏈接


分析

真是貪婪的送禮者……醉了……

我們應該先讀一下有幾個人。再建立HashMap,其優勢很明顯:快速查找+編碼簡單。
畢竟我們讀一讀題給的測試用例,給的人名是:dave、laura、owen、vick、amr,最終錄入的時候順序是:dave、owen、amr、laura、vick,二者順序不一致。如果我們不選用散列的話,就被迫面臨線性結構的順序查找(或者二分查找),雖然本題數據量不大,但需要額外的編碼負擔,沒必要。

但我們還是需要一個數組,目的是:恢復原有的順序。
因為最后輸出的順序還是最初錄入人名的順序:如dave、laura、owen、vick、amr。
但HashMap的數據被散列以后就改變了順序,所以可能不是按照這個順序輸出。
我們根據一個存儲姓名的數組的String去get到Map里的Integer,即可。

本來想用面向對象,后來發現根本不用,直接用key-value即可處理。

注意:如不能整除,錢要返還的,返還的解讀就是不分給別人。因為自己給自己,收益是0

另外,讀測試用例,發現可能給0個人,這就會發生除0異常,所以要做特判。但特判以后雖然不處理但也要把數都讀了,只是不要用而已啦。
如果你不讀的話,就會導致后面的程序讀不該讀到的東西,很容易RE,起碼也是WA,這樣不好。

AC代碼(Java語言描述)

import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = Integer.parseInt(scanner.nextLine());Map<String, Integer> map = new HashMap<>(5);String[] array = new String[num];for (int i = 0; i < num; i++) {String name = scanner.nextLine();map.put(name, 0);array[i] = name;}for (int i = 0; i < num; i++) {String temp = scanner.nextLine();int tempMoney = scanner.nextInt(), tempNum = scanner.nextInt();scanner.nextLine();if (tempNum != 0) {tempMoney /= tempNum;map.put(temp, map.get(temp) - tempMoney * tempNum);for (int j = 0; j < tempNum; j++) {String tempName = scanner.nextLine();map.put(tempName, map.get(tempName) + tempMoney);}}}scanner.close();for (String s : array) {System.out.println(s + " " + map.get(s));}} }

總結

以上是生活随笔為你收集整理的贪婪的送礼者(洛谷P1201题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。