中石油新生賽第八場 問題 A: 春遊
阿新 • • 發佈:2018-12-22
題目描述
小X就讀的CZ 中學今年又取得了小高考的空前佳績,全校師生都很開心,於是大家希望找個地方去春遊,在廣泛徵集了全校師生的意見後,最終決定前往嬉戲谷遊玩一天。出行方案為租用大巴,可供租用的大巴有兩種,一種是49 座的,一種是33 座的,49 座的大巴每輛租金為3300 元,33 座的大巴每輛租金為1900 元,全校師生共有n 人,現在學校希望找到一種最省錢的租車方案,這個任務學校交給了擅長程式設計的小X同學,而小X同學最近太忙了,他覺得這麼簡單的任務交給小學生就行了,如果你想參加江蘇省“資訊與未來”夏令營那就先把這個問題解決了吧!
輸入
輸入資料僅有一行包含一個正整數n,表示CZ 中學出遊的總人數
輸出
輸出資料僅有一行包含一個正整數,表示租車所需的最少費用。
樣例輸入
複製樣例資料 67
樣例輸出
5200
提示
最省錢的租車方案是兩種大巴各租一輛,總費用為5200 元,其他的方案均不可能低於該費用。
資料範圍
20%的資料,n<=50
40%的資料,n<=100
80%的資料,n<=10^6
100%的資料,n<=10^12,注意這部份資料要用long long
考察貪心,貪心的策略是先優先選擇33座的,餘下的如果小於等於16且不等於0,換下一輛33的替上一輛49的,如果大於16,添一輛33的。
#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
long long int n;
long long int ans;
long long int cnt1=0,cnt2=0,x,y;
cin>>n;
cnt1=n/33;
x=n%33;
if(x<=16&&x!=0)
{
cnt1--;cnt2++;
}
else if(x>16)
{
cnt1++;
}
ans=cnt1* 1900+cnt2*3300;
if(n<=33)
ans=1900;
cout<<ans<<endl;
return 0;
}