CSP-J T2 75pts求调
  • 板块学术版
  • 楼主xnmzyz
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/24 22:40
  • 上次更新2023/11/2 11:30:45
查看原帖
CSP-J T2 75pts求调
384730
xnmzyz楼主2023/10/24 22:40
#include<bits/stdc++.h>
using namespace std;
long long n,d,S,ans;
long long a[114514],v[114514];
double last;
int main() {
	scanf("%lld %lld",&n,&d);
	for(int i=2; i<=n; i++) {
		scanf("%lld",&v[i]);
		v[i]+=v[i-1];
	}
	for(int i=1; i<=n; i++) {
		scanf("%lld",&a[i]);
	}
	for(int i=1; i<=n; ) {
		int ok=1;
		for(int j=i+1; j<=n; j++) {
			if(a[j]<a[i]) {
				ok=0;
				ans+=(ceil(1.0*(v[j]-v[i])/d-last))*a[i];
				last+=ceil(1.0*(v[j]-v[i])/d-last)-1.0*(v[j]-v[i])/d;
				
//				cout<<i<<">>"<<j<<"	"<<ceil(1.0*(v[j]-v[i])/d-last)<<" "<<"last:"<<last<<endl;
				
				i=j;
				break;
			}
		}
		if(ok) {
			ans+=a[i]*(ceil(ceil(1.0*(v[n]-v[i])/d)-last));
			break;
		}
	}
	cout<<ans;
	return 0;
}

2023/10/24 22:40
加载中...