D. Road to Post Office(典型的三分)

一看题就觉得是一道很水的三分

很 明 显 是 前 面 开 一 段 汽 车 ( 可 能 不 开 ) , 后 面 走 路 很明显是前面开一段汽车(可能不开),后面走路 (),

而 且 容 易 看 出 开 汽 车 的 时 间 要 适 量 而且容易看出开汽车的时间要适量

不 能 太 多 不 能 太 少 不能太多不能太少

所 以 时 间 函 数 是 一 个 下 凹 函 数 , 使 用 三 分 所以时间函数是一个下凹函数,使用三分 ,使

三 分 修 理 汽 车 的 次 数 , 代 码 很 简 单 三分修理汽车的次数,代码很简单 ,

#include <bits/stdc++.h>
using namespace std;
#define int long long
int d,k,a,b,t;
int calc( int mid )
{
	int temp=0,car=mid*k+k;//可以跑这么久
	if( car>=d )	temp=d*a+mid*t;
	else	temp=car*a+mid*t+(d-car)*b;
	return temp;
}
signed main()
{
	cin >> d >> k >> a >> b >> t;
	int l=0,r=d,mid1,mid2,ans=1e18;
	while( r>=l )
	{
		mid1=l+(r-l)/3,mid2=r-(r-l)/3;//装几次油
		int q=calc(mid1),w=calc(mid2);
		ans=min(ans,min(q,w));
		if( q>w )	l=mid1+1;
		else	r=mid2-1;
	}
	cout << ans;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值