#include<bits/stdc++.h>
using namespace std;
int main(){
double sum=0,sum1=0,qwe;
long long n,d,a[100005],b[100005],i=0,j=1,minn,mini,m=1,poi;
unsigned long long zxc;
//输入
cin>>n>>d;
while(j<n){
cin>>a[i];
i++;
j++;
}
i=0;
while(i<=d){
cin>>b[i];
i++;
m++;
}
i=1;
j=0;
minn=b[0];
mini=0;
while(i<m){
sum+=a[j];//加路程
j++;
if(b[i]<minn){
qwe=sum/d;
//判断钱
if(floor(qwe)*d>=sum){
sum1+=floor(qwe)*minn;
poi=0;
}
else{
sum1+=ceil(qwe)*minn;
poi=1;
}
minn=b[i];//找最小
mini=i;
//计算路程
if(poi==0){
sum=sum-floor(qwe)*d;
}
else{
sum=sum-ceil(qwe)*d;
}
}
i++;
}
zxc=sum1;//防止输出科学计数法
cout<<zxc;
return 0;
}
rt,求调,过的前10个测试点
上面是考场代码,可能有一些多余的地方
sum:剩余的路程
sum1:总钱数
qwe:需要行多少公里
n,d,a,b:对应题目中的n,d,v,a
i,j,m:计数用
minn,mini:找最小
poi:对路程的特判(向上或向下取整)
zxc:防止输出科学计数法