关于我的代码-玄关
查看原帖
关于我的代码-玄关
902351
Little_x_starTYJ楼主2023/10/24 14:44

csp-j t2哪里错了?

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
typedef long long ll;
ll a[N], m[N];
ll qz[N];
ll ans;
int main() {
	//freopen我自己删了,为了不在洛谷上WA
	int n;
	ll d;
	scanf("%d%lld", &n, &d);
	ll sum = 0;
	for (int i = 1; i < n; i++)
		scanf("%lld", &a[i]), sum += a[i], qz[i] = qz[i - 1] + a[i];
	ll min2 = N, id = 0;
	for (int i = 1; i <= n; i++) {
		scanf("%lld", &m[i]);
		if (m[i] < min2) {
			min2 = m[i];
			id = i;
		}
	}
	if (id == 1) {
		if (sum % d == 0)
			cout << sum / d * min2;
		else
			cout << (sum / d + 1) * min2;
		return 0;
	} else {
		min2 = m[1], id = 1;
		ll zou = 0;
		for (int i = 2; i < n; i++) {
			if (m[i] < min2) {
				ll jl = qz[i - 1] - qz[id - 1];
				if ((jl - zou) % d == 0)
					ans += (jl - zou) / d * min2, zou = 0;
				else
					ans += ((jl - zou) / d + 1) * min2, zou = zou - jl + ((jl - zou) / d + 1) * d;
				min2 = m[i];
				id = i;
			}
		}
		ll jl = qz[n - 1] - qz[id - 1];
		if ((jl - zou) % d == 0)
			ans += (jl - zou) / d * min2;
		else
			ans += ((jl - zou) / d + 1) * min2;
		cout << ans;
	}
	return 0;
}
2023/10/24 14:44
加载中...