45分求调
查看原帖
45分求调
1033739
aCBHa楼主2023/11/10 21:55

从int改成long long多了30分

不知道是思路问题还是细节问题

minm是最便宜的加油站的位置,oil是剩余的油,way是从当前站到下一个更便宜的站的路程。

代码

#include<bits/stdc++.h>
using namespace std;
long long n,d,minm,tot,way,oil,v[100000],a[100001];
int main()
{
	cin>>n>>d;
	for(int i=1;i<=n-1;++i) cin>>v[i];
	for(int i=1;i<=n;++i) cin>>a[i];
	minm=1;
	for(int i=2;i<=n;++i)
	{
		way+=v[i-1];
		if(i==n||a[i]<a[minm])
		{
			if(oil>=way) oil-=way;
			else
			{
				tot+=ceil(1.0*(way-oil)/d)*a[minm];
				oil=(way-oil)%d;
			}
			way=0;
			minm=i;
		}
	}
	cout<<tot;
	return 0;
}

请你帮帮我,谢谢!

2023/11/10 21:55
加载中...