CSP-J T2
  • 板块灌水区
  • 楼主Floating_Trees
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/21 20:53
  • 上次更新2023/11/2 12:08:55
查看原帖
CSP-J T2
953181
Floating_Trees楼主2023/10/21 20:53

求调

#include "bits/stdc++.h"
#define ll long long

using namespace std;

const int maxn = (int)1e5 + 10;
int n,d,v[maxn],a[maxn];
ll cnt[maxn];

void input()
{
	scanf ("%d%d",&n,&d);
	for (int i = 1;i < n;i++)	
		scanf ("%d",&v[i]),cnt[i+1] = cnt[i] + a[i];
	for (int i = 1;i <= n;i++)
		scanf ("%d",&a[i]);
}

ll dfs(int l,int r) // dfs(l,r) 表示走完 [l,r] 区间的最小花费 
{
//	printf ("%d %d\n",l,r);
	if (l == r)
		return 0;
	int k = 0,mn = INT_MAX;
	for (int i = l;i <= r;i++)
		if (a[i] < mn)
			mn = a[i],k = i;
	return dfs(l,k-1) + 1ll * (cnt[r] - cnt[k-1] + d - 1) / d * a[k];
}

int main()
{
	input();
	printf ("%lld",dfs(1,n-1));
	
	return 0;
}
2023/10/21 20:53
加载中...