5308. 公路

题意

有n 个站点,站点可以加油,站点之间的油的价格不一定相等,站点的编号从1到n,站点之间的距离用v表示,站点的油价用a表示,求从1站点到n站点所需要的最小的油价是多少

数据范围

对于所有测试数据保证:1≤n≤105
,1≤d≤105
,1≤vi≤105
,1≤ai≤105

输入

依次输入站点数目n,每一升油可以跑的距离,站点之间的距离,站点的油的价格
5 4
10 10 10 10
9 8 9 6 5

输出

79

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
long long v[N],a[N],o[N];
int main()
{
   
    int n,d;
    cin>>n>>d;
    for(int i=2;i<=n;i++)
    {
   
        cin>>v[i];
        v[i]+=v[i-1];
        o[i]=ceil((double)v[i]/d);
    }
    for(int i=1;i<=n;i++)   cin>>a[i];
    long long p=a[1];
    long long ans=0;
    for(int i=1;i<=n;i++)
    {
   
        ans+=p*(o[i]-o[i-1]);
        p=min(p,a[i]);
    }
    cout<<ans<<endl;
    return 0;
}

想法

前缀和+维护最小值

o数组表示的是油的升数,p表示的是最小的油价,ans表示总的花费

贪心的思想,每一次都是使用当前最小的油价

好像代码很短,非常简单,以上,准备等y总直播讲解完这题,再对该博客进行一些补充和修改

向上取整是防止跑到一半没有油了,宁可多出一点也不可以半路熄火

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-06 17:00:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-06 17:00:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-06 17:00:01       82 阅读
  4. Python语言-面向对象

    2024-01-06 17:00:01       91 阅读

热门阅读

  1. LeetCode[53]最大子数组和

    2024-01-06 17:00:01       64 阅读
  2. 机器学习的几个需求层次

    2024-01-06 17:00:01       52 阅读
  3. spdlog源码学习

    2024-01-06 17:00:01       53 阅读
  4. 《微信小程序开发从入门到实战》学习七十三

    2024-01-06 17:00:01       48 阅读
  5. 如何停止一个运行中的Docker容器

    2024-01-06 17:00:01       65 阅读
  6. 步进电机调速原理

    2024-01-06 17:00:01       48 阅读