某市計程車計價規則如下:起步4公里10元,即使你的行程沒超過4公里;接下來的4公里,每公里2元;之後每公里2.4元。行程的最後一段即使不到1公里,也當作1公里計費。
乙個乘客可以根據行程公里數合理安排坐車方式來使自己的打車費最小。
例如,整個行程為16公里,乘客應該將行程分成長度相同的兩部分,每部分花費18元,總共花費36元。如果坐計程車一次走完全程要花費37.2元。
現在給你整個行程的公里數,請你計算坐計程車的最小花費。
輸入包含多組測試資料。每組輸入乙個正整數n(n<10000000),表示整個行程的公里數。
當n=0時,輸入結束。
對於每組輸入,輸出最小花費。如果需要的話,保留一位小數。39
1601020.4
36貪心問題,首先看分段函式:
f(x) = 10 (x <= 4)
= 10 + (x - 4) * 2 (4 <= x <= 8)
= 18 + (x - 8) * 2.4 (x >= 8)
小於4小於8的路程簡單不多說,超過8的部分,用乙個變數 remain = n - 8,如果 remain <= 4,那麼應該不下車繼續往下坐,因為下去每里2.4元,起步價是每里2.5元。如果 remain >= 5,那麼應該下車分兩趟車。因為如果總路程為13公里,那麼分兩趟車和一趟車一樣的**都是30元,如果總路程是14公里,則分兩趟車是32元,一趟車是32.4元。總路程16公里以內分兩趟車最省錢,而如果總路程超過16公里,那麼瘋狂-8變成少於16公里的情況處理。
#include #include #include using namespace std;
const double eps = 1e-6;
int main()
else if (n <= 8) else
if (n <= 4)
sum += 2.4 * n;
else
sum += 10 + (n - 4) * 2.0;
} int tmp = (int)sum;
if (sum - tmp > eps)
printf("%.1f\n", sum);
else
cout << tmp << endl;
} return 0;
}
1128 計程車費
時間限制 1 sec 記憶體限制 32 mb 提交 535 解決 149 提交狀態 乙個乘客可以根據行程公里數合理安排坐車方式來使自己的打車費最小。例如,整個行程為16公里,乘客應該將行程分成長度相同的兩部分,每部分花費18元,總共花費36元。如果坐計程車一次走完全程要花費37.2元。現在給你整個行...
Codeup貪心 計程車費
某市計程車計價規則如下 起步4公里10元,即使你的行程沒超過4公里 接下來的4公里,每公里2元 之後每公里2.4元。行程的最後一段即使不到1公里,也當作1公里計費。乙個乘客可以根據行程公里數合理安排坐車方式來使自己的打車費最小。例如,整個行程為16公里,乘客應該將行程分成長度相同的兩部分,每部分花費...
codeup 計程車費 C
題目描述 某市計程車計價規則如下 起步4公里10元,即使你的行程沒超過4公里 接下來的4公里,每公里2元 之後每公里2.4元。行程的最後一段即使不到1公里,也當作1公里計費。乙個乘客可以根據行程公里數合理安排坐車方式來使自己的打車費最小。例如,整個行程為16公里,乘客應該將行程分成長度相同的兩部分,...