一看题就觉得是一道很水的三分
很 明 显 是 前 面 开 一 段 汽 车 ( 可 能 不 开 ) , 后 面 走 路 很明显是前面开一段汽车(可能不开),后面走路 很明显是前面开一段汽车(可能不开),后面走路
而 且 容 易 看 出 开 汽 车 的 时 间 要 适 量 而且容易看出开汽车的时间要适量 而且容易看出开汽车的时间要适量
不 能 太 多 不 能 太 少 不能太多不能太少 不能太多不能太少
所 以 时 间 函 数 是 一 个 下 凹 函 数 , 使 用 三 分 所以时间函数是一个下凹函数,使用三分 所以时间函数是一个下凹函数,使用三分
三 分 修 理 汽 车 的 次 数 , 代 码 很 简 单 三分修理汽车的次数,代码很简单 三分修理汽车的次数,代码很简单
#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;
}