大佬,救救我!教教我!玄关!
查看原帖
大佬,救救我!教教我!玄关!
1046305
WCX6936楼主2024/1/28 19:51
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1;
int jl[N],m[N],s[N];
int n,d;
int find(int w){
	for(int j=w+1;j<=n;j++){
		if(m[j]<m[w])return j;
	}
	return n;
}
int main()
{
    long long ans=0;
    cin>>n>>d;
    for(int i=1;i<n;i++){
    	cin>>jl[i];
    	s[i+1]=s[i]+jl[i];
	}
    for(int i=1;i<=n;i++)cin>>m[i];
    int w=1;
    double le=0;
    while(w<n){
        int a=find(w);
        //cout<<"a:"<<a<<endl;
        int lc=s[a]-s[w];
        //cout<<"lc:"<<lc<<endl;
        double sum=ceil(lc*1.0/d-le);
        //cout<<"sum:"<<sum<<endl;
    	ans+=sum*m[w];
    	//cout<<"ans:"<<ans<<endl;
		le+=sum;
		//cout<<"le:"<<le<<endl;
		w=a;
        le-=lc*1.0/d;
        //cout<<"le:"<<le<<endl;
    }
    cout<<ans;
    return 0;
}

2024/1/28 19:51
加载中...