万TLE中一点AC
查看原帖
万TLE中一点AC
1284381
Lgc2012楼主2024/10/3 09:02

万TLE中一点AC

#include<bits/stdc++.h>
using namespace std;
long long n,d,v[100100],a[100100],money=0;
double f=0;
long long find(long long x){
	for(int i=x;i<=n;i++){
		if(a[x]>a[i]) return i;
	}
	return 0;
}
long long work(long long from,long long to){
	long long s=v[to-1]-v[from-1];
	long long you=ceil((s*1.0/d*1.0)-f);
	f=you-((s*1.0/d)-f);
	return you*a[from];
}
int main(){
	cin>>n>>d;
	for(int i=1;i<=n-1;i++){
		cin>>v[i];
		if(i!=1) v[i]+=v[i-1];
	}
	for(int i=1;i<=n;i++) cin>>a[i];
	long long from=1,to;
	while(true){
		to=find(from);
		money+=work(from,to);
		if(to==n||from==n) break;
		from=to;
	}
	cout<<money<<endl;
	return 0;
} 

99孩子(QwQ)

2024/10/3 09:02
加载中...