b119 - 售票系統 (Sales)
題目描述
題目描述了一個航空公司根據訂位比例調整機位價格的策略,要求計算航班的利潤或虧損。給定票面價、機位總數以及訂位紀錄,根據訂位數量計算總收入,再減去成本(票面價的 30%)以得出最終利潤或虧損。
解題思路
此題的核心在於模擬航空公司的售票策略。程式首先讀取票面價 s、機位總數 t 和訂位數量 n。然後,程式遍歷每個訂位紀錄,計算總收入。收入的計算方式是根據訂位數量落在不同的比例區間內,應用不同的折扣率(70%、80%、90% 或 100%)。最後,程式計算總利潤,即總收入減去成本(t * s * 0.3)。
複雜度分析
- 時間複雜度: O(n),其中 n 是訂位紀錄的數量。程式需要遍歷所有訂位紀錄來計算總收入。
- 空間複雜度: O(1),程式只使用了幾個常數大小的變數來儲存票面價、機位總數、訂位數量和總收入,因此空間複雜度是常數級別。
程式碼
#include <iostream>
using namespace std;
int main(){
double s,t,n;
while(cin >> s >> t >> n){
double x,sum=0,mon=0;
while(n--){
cin >> x;
sum+=x;
}
if(sum>t*0.2){
mon+=t*0.2*s*0.7;
sum-=t*0.2;
if(sum>t*0.2){
mon+=t*0.2*s*0.8;
sum-=t*0.2;
if(sum>t*0.2){
mon+=t*0.2*s*0.9;
sum-=t*0.2;
}
else{
mon+=sum*s*0.9;
sum=0;
}
}
else{
mon+=sum*s*0.8;
sum=0;
}
}
else{
mon+=sum*s*0.7;
sum=0;
}
mon+=sum*s;
printf("%.0lf\n",mon-t*s*0.3);
}
}