熱門文章

2025年5月21日 星期三

ZeroJudge 解題筆記:f934. 消失的二十年

作者:王一哲
日期:2025年5月21日



ZeroJudge 題目連結:f934. 消失的二十年

解題想法


這是 l919. P.2 珠寶交易 (Jewel) ) 簡化題,只要計算一次買賣的最大獲利。

Python 程式碼


使用時間約為 1.2 s,記憶體約為 78.3 MB,通過測試。
buy, profit = float('inf'), 0  # 最低買價,利潤
for p in map(int, input().split()):  # 讀取每天的價格
    buy = min(buy, p)  # 更新最低買價
    profit = max(profit, p - buy)  # 更新最大利潤
print(profit)

使用時間約為 0.8 s,記憶體約為 78.4 MB,通過測試。
buy, profit = float('inf'), 0  # 最低買價,利潤
for p in map(int, input().split()):  # 讀取每天的價格
    if p < buy: buy = p  # 更新最低買價
    if p - buy > profit: profit = p - buy  # 更新最大利潤
print(profit)


C++ 程式碼


使用時間約為 0.1 s,記憶體約為 96 kB,通過測試。
#include <cstdio>
#include <algorithm>
using namespace std;

int main() {
    int buy = 1E9, profit = 0, p;  // 最低買價,利潤,價格
    while(scanf("%d", &p) != EOF) {  // 讀取每天的價格
        buy = min(buy, p);  // 更新最低買價
        profit = max(profit, p - buy);  // 更新最大利潤
    }
    printf("%d\n", profit);
    return 0;
}

使用時間約為 0.1 s,記憶體約為 76 kB,通過測試。
#include <cstdio>

int main() {
    int buy = 1E9, profit = 0, p;  // 最低買價,利潤,價格
    while(scanf("%d", &p) != EOF) {  // 讀取每天的價格
        if (p < buy) buy = p;  // 更新最低買價
        if (p - buy > profit) profit = p - buy;  // 更新最大利潤
    }
    printf("%d\n", profit);
    return 0;
}


沒有留言:

張貼留言