csp-j t2 5分求调
  • 板块学术版
  • 楼主fire_ak_ioi
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/21 22:49
  • 上次更新2023/11/2 12:04:42
查看原帖
csp-j t2 5分求调
1055174
fire_ak_ioi楼主2023/10/21 22:49
#include<bits/stdc++.h>
#include<vector>
using namespace std;
#define ll long long
inline ll read(){
    ll x=0,f=1;char c=getchar();
    while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
    while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
    return f*x;
}
const int N=1e5+10;
int n,d;
int v[N],p[N],sumv[N];
int main(){
    n=read(),d=read();
    for(int i=2;i<=n;i++){
    	cin>>v[i];
    	sumv[i]=sumv[i-1]+v[i];
	}
	for(int i=1;i<=n;i++){
		cin>>p[i];
	}
	int min=p[1];
	vector<int>down;
	down.push_back(1);
	for(int i=2;i<=n;i++){
		if(p[i]<min) down.push_back(i);
	}
	if(down.size()==1){
		cout<<ceil((sumv[n]-sumv[1]) * 1.0/d)*p[1];
		return 0;
	}
	int cu=1;
	int price=0,dis=0;
	for(int i=1;i<down.size();i++){
		int nums=ceil((sumv[down[i]]-sumv[cu]-dis)*1.0/d);
		price+=nums*p[cu];
		dis=nums*d-(sumv[down[i]]-sumv[cu]-dis);
		cu=down[i];
	}
	cout<<price<<endl;
	return 0;
}

2023/10/21 22:49
加载中...