1 条题解

  • 3
    @ 2024-8-23 11:59:04

    题目传送门

    题目分析

    问小苞从站点 11 开到站点 nn,至少要花多少钱加油?

    题目要求要花最少的钱,实际上就是一个“贪心”的过程,在前 i 站里,哪站最便宜,就在那站把油买好。不过要注意,到第 i 站时,可能会有残余的油,要考虑这种情况。

    话不多说,直接看代码。

    代码

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    int n,d,v[100005],a[100005];
    ll asuml, // 已走路程
        summ, // 总钱数
        mina; // 到第 i 站时的最低价格
    int main(){
        cin >> n >> d;
        for(int i=1;i<n;i++) cin >> v[i],v[i]+=v[i-1];
        for(int i=1;i<=n;i++) cin >> a[i];
        mina=a[1];
        for(int i=1;i<n;i++){
        	//cout << i << ' ';
            if(a[i]<mina) mina=a[i];
            //cout << mina << " "; 
            int xl=v[i]-asuml, // 还要走多远
                ys=0;ys=xl/d; // 到下一站需买几升油
            if(xl%d!=0) ys++;
            //cout << ys << "\n";
            summ+=ys*mina;
            asuml+=ys*d;
        }
        cout << summ;
        return 0;
    }
    
    

    感谢观看,麻烦点个赞

    • 1

    信息

    ID
    15
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    22
    已通过
    7
    上传者