Java解決 PTA L2-003 月餅 (25分) 超時問題
L2-003 月餅 (25分)
月餅是中國人在中秋佳節時吃的一種傳統食品,不同地區有許多不同風味的月餅。現給定所有種類月餅的庫存量、總售價、以及市場的最大需求量,請你計算可以獲得的最大收益是多少。
注意:銷售時允許取出一部分庫存。樣例給出的情形是這樣的:假如我們有 3 種月餅,其庫存量分別為 18、15、10 萬噸,總售價分別為 75、72、45 億元。如果市場的最大需求量只有 20 萬噸,那麼我們最大收益策略應該是賣出全部 15 萬噸第 2 種月餅、以及 5 萬噸第 3 種月餅,獲得 72 + 45/2 = 94.5(億元)。
輸入格式:
每個輸入包含一個測試用例。每個測試用例先給出一個不超過 1000 的正整數 N 表示月餅的種類數、以及不超過 500(以萬噸為單位)的正整數 D 表示市場最大需求量。隨後一行給出 N 個正數表示每種月餅的庫存量(以萬噸為單位);最後一行給出 N 個正數表示每種月餅的總售價(以億元為單位)。數字間以空格分隔。
輸出格式:
對每組測試用例,在一行中輸出最大收益,以億元為單位並精確到小數點後 2 位。
輸入樣例:
3 20
18 15 10
75 72 45
輸出樣例:
94.50
Java程式碼解決辦法
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static class Moon {
double sum;
double value;
double percent;
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] s = reader.readLine().split(" ");
int n = Integer.parseInt(s[0]);
int cap = Integer.parseInt(s[1]);
double values = 0;
Moon [] moons = new Moon[n];
s = reader.readLine().split(" ");
for (int i = 0; i < n; i++) {
moons[i] = new Moon();
moons[i].sum = Double.parseDouble(s[i]);
}
List<Moon> list = new ArrayList<>();
s = reader.readLine().split(" ");
for (int i = 0; i < n; i++) {
moons[i].value = Double.parseDouble(s[i]);
moons[i].percent = moons[i].value * 1.0 / moons[i].sum;
list.add(moons[i]);
}
Collections.sort(list, new Comparator<Moon>() {
@Override
public int compare(Moon o1, Moon o2) {
if(o1.percent > o2.percent) return -1;
else if(o1.percent == o2.percent) return 0;
return 1;
}
});
for (Moon moon : list) {
// System.out.println(moon.value);
if(moon.sum <= cap) {
values += moon.value;
cap -= moon.sum;
continue;
}
if(cap != 0) {
values += moon.percent * cap;
cap = 0;
}
}
System.out.printf("%.2f", values);
}
}
在PTA上刷題的時候一定要記住了,超時的問題大多數都是卡的輸入輸出的點,如果遇到超時問題的時候,可以嘗試修改Scanner輸入流。
相關文章
- L2-003 月餅【貪心】
- 解決 go get 超時問題Go
- Java謎題7:餅乾-解決方案Java
- 【CCCC】L2-003 月餅 (25分),貪心排序排序
- L2-003 月餅 (25分)測試點2
- 解決代理連線超時問題
- 解決代理超時問題的三種方法
- Selenium爬蟲遇到超時TimeOut問題的解決方法爬蟲
- JAVA | Java 解決跨域問題Java跨域
- Java 8 的日期與時間問題解決方案Java
- SecureCRT 超時自動斷開連線問題解決方法Securecrt
- 使用requests庫解決Session物件設定超時的問題Session物件
- Go 解決國內go get安裝包超時問題Go
- Java解決跨域問題Java跨域
- java解決數字黑洞問題Java
- JAVA程式設計題-用java解決兔子問題Java程式設計
- 徹底解決關於CSocket類的Receive超時的問題(轉)
- java nio解決半包 粘包問題Java
- java中亂碼問題解決方法Java
- nginx /Java 解決跨域問題方案NginxJava跨域
- 解決吞吐效能問題時的思路
- LINUX 解決時間同步問題(NTP)Linux
- 常見的HTTP介面超時問題出現原因及解決辦法HTTP
- wmsys.wm_concat 超長問題 解決方案
- 解決MongoDB儲存時間時差的問題MongoDB
- Java™ 教程(常見問題及其解決方案)Java
- java學習中問題與解決方式Java
- Java 謎題 7:餅乾(Cookie)JavaCookie
- 免費餡餅 題解
- 【問題解決】使用YYYY-MM-dd時間轉換問題
- JQ AJAX 超時問題 timeout
- 日常問題排查-呼叫超時
- 介面超時問題彙總
- PTA搜尋專題部分題解
- Java技巧-解決JAVA_HOME變數無效問題Java變數
- 解決 nginx 反向代理時的 upstream timeout 問題Nginx
- mysql執行truncate drop 時卡死問題解決MySql
- 解決Sentinel module java.base does not “opens java.lang“ 問題Java