社区讨论

求大神指点

P9749[CSP-J 2023] 公路参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@logkbtw2
此快照首次捕获于
2023/11/02 10:23
2 年前
此快照最后确认于
2023/11/02 10:23
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,m;
int dp[100100];
int a[100100],b[100010],c,d,ans;
signed main(){
	ios::sync_with_stdio(false);
	cin>>n>>d;
	dp[0]=1e9;
	for(int i=1;i<n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
		dp[i]=min(dp[i-1],b[i]);
	}
	double y;//y表示我每次买剩下的 
	for(int i=1;i<n;i++){
		if(dp[i]==dp[i+1]){
			c+=a[i];
		} 
		else{
			c+=a[i];
			if(c>=y){
				c-=y;
				y=0;
			}
			else{
				y=(y-c);
				continue; 
			}
			if(c%d==0){
				ans+=(c/d)*dp[i];
			}else{
				ans+=(ceil(c*1.0/d))*dp[i];
				y=ceil(c*1.0/d)-(c*1.0/d);
				y*=d;
			}
			c=0;
		}
	//	cout<<ans<<" ";
	}
	if(c){
		if(c%d==0){
				ans+=(c/d)*dp[n-1];
			}else{
				ans+=(ceil(c*1.0/d))*dp[n-1];
				y=ceil(c*1.0/d)-(c*1.0/d);
				y*=d;
			}
			c=0;
	}
	cout<<ans;
	return 0; 
}

回复

0 条回复,欢迎继续交流。

正在加载回复...