为什么这个代码能AC啊?
查看原帖
为什么这个代码能AC啊?
716260
SegmentTree_楼主2024/10/25 15:33

来自于一年前的我,现在根本看不懂/ll

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n, d, a[110001], v[110001], oil, ans = 0, j, sum, tmp, add;
int main(){
	cin >> n >> d;
	for (int i = 2;i <= n;i++){
		cin >> a[i];
	}
	for (int i = 1;i <= n;i++) cin >> v[i];
	for (int i = 1;i < n;i = j){
		sum = 0;
		for (j = i + 1;j <= n;j++){
			sum += a[j];
			if (v[j] < v[i]){
				break;
			}
		}
		sum -= min(sum, oil);
		oil -= min(sum, oil);
		add = (sum / d + (sum % d > 0 ? 1 : 0));
		ans += add * v[i];
		oil += max(0LL, add * d - sum);
		//cout << add << ' ' << sum << ' ' << oil << endl;
	}
	cout << ans << '\n';
}
2024/10/25 15:33
加载中...