代码如下:
#include <bits/stdc++.h>
using namespace std;
int n;
float d;
struct road
{
// 记录路程和价格
int s;
int a;
int v;
} r[100010];
void qianzhui()
{
r[1].v=0;//从自己到自己不需要耗油
for(int i=2;i<=n;i++)
{
r[i].v=r[i-1].v+ceil(r[i].s/d);//计算从第一个站点到第i个需要多少油
}
}
各位大佬ORZ
long long temp=0;
int oil(int x,int y)
{
for(int i=x;i<y;i++)
{
temp+=r[i].s;
}
temp=ceil(temp/d);
return temp;
}
int main()
{
cin >> n>>d;
for (int i = 1; i < n; i++)
cin >> r[i].s; // 记录每个站点之间的距离,最后一个站点为0
for (int i = 1; i <= n; i++)
cin >> r[i].a;
//qianzhui();
long long sum=0;
r[n].a=0;//把最后的站点给赋为0,方便后续计算
int p=0;
for(int i=1;i<n;)
{
p=0;
for(int j=i+1;j<=n;j++)
{
//每次寻找离比当前油价便宜的站点还有几站,再根据预处理好的油耗计算出要加多少油
if(r[i].a>r[j].a)
{
int sum1=sum;
sum=sum+oil(i,j)*r[i].a;
cout<<i<<" "<<j<<" "<<sum-sum1<<endl;
p=j;
break;
}
}
i=p;
}
cout<<sum<<endl;
return 0;
}
各位大佬ORZ