CSP t2 5分求助
  • 板块学术版
  • 楼主hkt486
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/24 22:09
  • 上次更新2023/11/2 11:31:09
查看原帖
CSP t2 5分求助
1039740
hkt486楼主2023/10/24 22:09

我的思路是这样的,只要在当前到某数价钱都为最少,就全买,直到可以到达下一个更小的价钱。


#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,d,a[100001],b[100001],sum=0,su=0,ans=0;
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>d;
	for(int i=1; i<n; i++) {
		cin>>a[i];
	}
	for(int i=1; i<=n; i++) {
		cin>>b[i];
	}
	int mi=b[1];
	for(int i=2; i<=n; i++) {
		if(b[i]<mi) {
			su=0;
			for(int j=1; j<i; j++) {
				su+=a[j];
			}
			if(su%d!=0) {
				su=su/d+1;
			} else su=su/d;
			ans+=(su-sum)*mi;
//			cout<<su<<" "<<sum<<" "<<mi<<" "<<ans<<" ";
			mi=b[i];
			sum=su;
//			cout<<sum<<endl;
			continue;
		}
	}
	cout<<ans;
	return 0;
}

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