80pts求条
查看原帖
80pts求条
1219621
da_nao_tong楼主2025/8/31 13:12
#include<bits/stdc++.h>
using namespace std;
long long ans=0,n,d,v[100005],a[100005];
int main()
{
    cin>>n>>d;
    for(int i=2;i<=n;i++)
        cin>>v[i];
    for(int i=1;i<=n;i++)
        cin>>a[i];
    long long bg=1,na=a[1],nd=0,sd=0;
    while(true)
    {
        if(bg==n)
        {
            ans=ans+(nd+d-1)/d*na;
            break;
        }
        bg++;
        nd+=v[bg];
        if(a[bg]<na)
        {
            nd-=sd;
            ans=ans+(nd+d-1)/d*na;
            na=a[bg];
            sd=(nd+d-1)/d*d-nd;
            nd=0;
        }
        // cout<<bg<<" "<<nd<<" "<<na<<" "<<ans<<" "<<sd<<endl;
    }
    cout<<ans<<endl;
    return 0;
}

ans就是总花费,bg是当前所在站点,na为当前油价,nd为当前以na为油价行驶的总距离,sd为行驶完nd距离后买油时产生的多余距离

我的想法是先一直开直到到了1个站点让na发生改变后在用老的na付玩油价,na只在当前油价低于na时改变

2025/8/31 13:12
加载中...