CSP T2求助
查看原帖
CSP T2求助
270854
二叉苹果树楼主2023/10/26 11:32
#include <bits/stdc++.h>
#define maxn 100010

std::vector<int> e;
long long v[maxn], a[maxn], s[maxn];
int main()
{
	int n, d;
	std::cin >> n >> d;
	for (int i = 1; i <= n - 1; i++)
	{
		std::cin >> v[i];
		s[i] = s[i - 1] + v[i];
	}
	for (int i = 1; i <= n; i++)
	{
		std::cin >> a[i];
		if (e.empty())
			e.push_back(i);
		else if (a[e.back()] > a[i])
			e.push_back(i);
	}
	long long ans = 0;
	double l = 0;
	for (int i = 0; i < e.size() - 1; i++)
	{
		int x = e[i], y = e[i + 1];
		double dis = s[y - 1] - s[x - 1];
		// std::cout << "dis: " << (dis - l) << '\n';
		ans += a[e[i]] * std::ceil((dis - l) / d);
		l = std::ceil(dis / d) * d - (dis - l);
		// std::cout << b << ' ' << l << '\n';
		// std::cout << e[i] << ' ' << b << '\n';
	}
	std::cout << ans << '\n';
}

给个数据啥的也行。

2023/10/26 11:32
加载中...