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輸入流。
相關文章
- 【CCCC】L2-003 月餅 (25分),貪心排序排序
- 解決 go get 超時問題Go
- 解決代理連線超時問題
- websphere 應用超時問題的解決Web
- nginx fastcgi 超時問題解決記錄NginxAST
- 解決代理超時問題的三種方法
- SQL超時解決方案-有時並不是設定問題SQL
- Eclipse中使用的容器超時問題解決方法Eclipse
- Go 解決國內go get安裝包超時問題Go
- 使用requests庫解決Session物件設定超時的問題Session物件
- 解決Redis/Codis Connection with master lost(複製超時)問題RedisAST
- SecureCRT 超時自動斷開連線問題解決方法Securecrt
- Java 8 的日期與時間問題解決方案Java
- JAVA | Java 解決跨域問題Java跨域
- 解決超過會話數問題會話
- Selenium爬蟲遇到超時TimeOut問題的解決方法爬蟲
- Java郵件(問題解決)Java
- Java解決跨域問題Java跨域
- 暫時解決的中文問題
- 徹底解決關於CSocket類的Receive超時的問題(轉)
- 分享解決SQL資料庫超時(timeout)的問題可能原因SQL資料庫
- 解決Redmine建立&更新問題時很慢的問題
- 解決「問題」,不要解決問題
- java解決數字黑洞問題Java
- Java 解決中文亂碼問題Java
- JAVA程式設計題-用java解決兔子問題Java程式設計
- 常見的HTTP介面超時問題出現原因及解決辦法HTTP
- 解決吞吐效能問題時的思路
- Golang解決XORM的時區問題GolangORM
- 解決內、外網同時訪問問題
- java中亂碼問題解決方法Java
- java nio解決半包 粘包問題Java
- nginx /Java 解決跨域問題方案NginxJava跨域
- 日常問題排查-呼叫超時
- 解決MongoDB儲存時間時差的問題MongoDB
- wmsys.wm_concat 超長問題 解決方案
- LINUX 解決時間同步問題(NTP)Linux
- Android定時關機問題解決Android