50分求教
查看原帖
50分求教
993212
Liangjiahao12楼主2024/7/4 22:05
#include <bits/stdc++.h>
using namespace std;
int a[100010],v[100010],sv[100010];
int main(){
    int n,d,sumv=0,ans=0;
    cin>>n>>d;
    for(int i=1;i<n;i++){
        cin>>v[i];
        sumv+=v[i];
        sv[i]=sv[i-1]+v[i];
    }
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    int cnt=ceil(sumv*1.0/d),cur=0,last=a[1];
    for(int i=1;i<=cnt;i++){
        if((i*d)-(sv[cur])>=d){
        	cur++;
        	last=min(last,a[cur]);
		}
        ans+=last;
//        cout<<last<<endl;
    }
    cout<<ans<<endl;
    return 0;
}

前缀和+贪心(有可能是复杂度的问题)
怎么调才能满分? %%%

2024/7/4 22:05
加载中...