csp-J T2求调
  • 板块学术版
  • 楼主cly312
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/22 00:50
  • 上次更新2023/11/2 12:03:10
查看原帖
csp-J T2求调
437243
cly312楼主2023/10/22 00:50

csp-j T2为什么只有40分

基础思路:买多少油取决于下一个比它便宜的加油站的地方的距离

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n,d;
	cin>>n>>d;
	int v[n+10],a[n+10];
	long long qian[n+10];//前缀和
	qian[0]=0;
	for(int i=1;i<n;i++) cin>>v[i],qian[i]=qian[i-1]+v[i-1];
	qian[n]=qian[n-1]+v[n-1];
	for(int i=1;i<=n;i++) cin>>a[i];
	int now=0;//还能走now(km)
	int ans=0;//已经花的钱
	for(int i=1;i<n;){
		int j;
		for(j=i;j<=n;j++){
			if(a[j]<a[i]) break;//比i便宜
		}
		j=min(j,n);//防止j=n+1
		int juli=qian[j]-qian[i]-now;//还能走now千米,所以要减去
		ans+=(juli+d-1)/d*a[i];//(juli/d)向上取整*a[i]
		now=(juli+d-1)/d*d-(juli);//可能不是整数,所以要向上取整后再乘
		i=j;//走到j
	}
	cout<<ans;
	return 0;
}
2023/10/22 00:50
加载中...