0pts,求调,非常感谢
查看原帖
0pts,求调,非常感谢
757085
wangtengyun楼主2024/10/4 16:09
#include<iostream>
#include<cmath>
#define ll long long
using namespace std;
ll n;
ll d;
ll a[100005],v[100005];
long double ans=0;
ll minn[100005];
ll cnt;
int main(){
    cin>>n>>d;
    for(int i=1;i<=n-1;i++)cin>>v[i],v[i]+=v[i-1];
    for(int i=1;i<=n;i++)cin>>a[i];
    long double Min=1e9+7;
    for(int i=1;i<=n;i++){
        if(a[i]<Min){
            Min=a[i];
            minn[++cnt]=i;
        }
    }
//    for(int i=1;i<=cnt;i++)cout<<minn[i]<<" ";
//    cout<<endl;
	long double rest=0;
    for(int i=1;i<=cnt-1;i++){
        long double dis=v[minn[i+1]-1]-v[minn[i]-1];
        rest+=dis/d-floor(dis/d);
        ans+=ceil(dis/d-floor(rest))*a[minn[i]];
		rest-=floor(rest);
//        cout<<dis<<" "<<rest<<" "<<ans<<endl;
    }
	cout<<ans;
    return 0;
}
2024/10/4 16:09
加载中...