45pts,求助
查看原帖
45pts,求助
813920
turt1e楼主2024/8/13 17:23

代码如下

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 10;
int v[N], a[N];
int n, d;
signed main()
{
	//freopen("road.in", "r", stdin);
	//freopen("road.out", "w", stdout);
	cin >> n >> d;
	for(int i = 2; i <= n; i++) cin >> v[i];
	for(int i = 1; i <= n; i++) cin >> a[i];
	int op = 0, ans = 0;
	for(int i = 1; i < n;)
	{
		int j = i + 1, k = 0;
		for(; j <= n; j++)
		{
			k += v[j];
			if(a[j] < a[i]) 
			{
				break;
			}
		}
		if(op <= k) k -= op, op = 0;
		else
		{
			op -= k;
			i = j;
			continue;
		}
		op += k - k / d * d;
		
		ans += (int)(k / d) * a[i];
		if(k % d) ans += a[i];
		//cout << op << " " << ans << endl;
		i = j;
	}
	cout << ans;
}
2024/8/13 17:23
加载中...