1. 程式人生 > >中石油新生賽第八場 問題 A: 春遊

中石油新生賽第八場 問題 A: 春遊

題目描述

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