中石油新生赛第八场 问题 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 
#include 
#include 
#include 
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;
} 

你可能感兴趣的:(ACM)