都是向上取整为什么一个是95一个是100
查看原帖
都是向上取整为什么一个是95一个是100
1265919
_yang_yi_bo_楼主2024/10/10 13:47

95分代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,d;
int a[100005],b[100005];
signed main(){
	cin>>n>>d;
	for(int i=1;i<n;i++){
		cin>>a[i];
	}b[0]=1e9;
	for(int i=1;i<=n;i++){
		cin>>b[i];
		b[i]=min(b[i-1],b[i]);
	}int sum=0,ans=0;
	for(int i=1;i<=n;i++){
		sum+=a[i];
		if(b[i]!=b[i+1]){
			ans+=((sum-1)/d+1)*b[i];
			sum-=((sum-1)/d+1)*d;
		}
	}cout<<ans;
	return 0;
}

评测记录

100分代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,d;
int a[100005],b[100005];
signed main(){
	cin>>n>>d;
	for(int i=1;i<n;i++){
		cin>>a[i];
	}b[0]=1e9;
	for(int i=1;i<=n;i++){
		cin>>b[i];
		b[i]=min(b[i-1],b[i]);
	}int sum=0,ans=0;
	for(int i=1;i<=n;i++){
		sum+=a[i];
		if(b[i]!=b[i+1]){
			ans+=((sum+d-1)/d)*b[i];
			sum-=((sum+d-1)/d)*d;
		}
	}cout<<ans;
	return 0;
}

评测记录

2024/10/10 13:47
加载中...