置頂

我的 VPython 教學文件 (HackMD 版本)

VPython 教學文件目錄 安裝及測試 基本語法 等速度直線運動 自由落下 終端速度 水平抛射 使用For迴圈計算水平抛射資料 斜向抛射 圓周運動 簡諧運動 單擺 木塊彈簧系統分離 重力及簡諧 行星運動 相疊木塊 雙重簡諧運動 一維彈性碰撞 ...

熱門文章

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


沒有留言:

張貼留言