首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

POJ 3619 Speed Reading - 簡單模擬計算閱讀時間

     編輯:C++ 入門

題目大意

K 隻牛,N 頁書。第 i 隻牛每分鐘讀 S_i 頁,連續讀 T_i 分鐘,休息 R_i 分鐘。求每隻牛讀完 N 頁所需總時間 (分鐘,向上取整)。

直接模擬

每隻牛獨立模擬:


while (N > 0) {
    if (ceil(N / S_i) > T_i) { // 本讀書階段讀不完
        N -= S_i * T_i;
        time += T_i + R_i; // 讀書 + 休息
    } else { // 本階段能讀完
        time += ceil(N / S_i);
        N = 0;
    }
}

完整代碼


#include 
#include 
using namespace std;

int main() {
    double N, K;
    while (cin >> N >> K) {
        for (int i = 0; i < K; ++i) {
            double S, T, R; cin >> S >> T >> R;
            double pages = N, time = 0;
            while (pages > 0) {
                if (ceil(pages / S) > T) {
                    pages -= S * T;
                    time += T + R;
                } else {
                    time += ceil(pages / S);
                    pages = 0;
                }
            }
            cout << (long long)time << '\n';
        }
    }
    return 0;
}

關鍵細節

  • ceil(pages / S) 計算剩餘頁數需讀幾分鐘 (向上取整)。
  • 判斷條件 ceil(pages/S) > T 而非 pages > S*T,因向上取整可能導致 pages ≤ S*T 但仍需 T+1 分鐘 (如 pages=10, S=3, T=3,S*T=9<10,但 ceil(10/3)=4>3)。
  • 輸出整數分鐘。

複雜度

  • 每隻牛迴圈次數 ≤ N / (S*T),極小。
  • 總時間可忽略。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved