read W, expected O是怎么回事?
查看原帖
read W, expected O是怎么回事?
755916
xiazha楼主2024/9/14 10:06
#include<bits/stdc++.h>
using namespace std;
long long n,q,dp[200002],all;
struct node{long long w,c;}p[200002];
bool cmp(node a,node b){return a.c<b.c;}
std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A,std::vector<int> B, std::vector<int> E)
{
	n=W.size();q=E.size();all=0;
	std::vector<long long> R(q, 0);
	for(int i=1;i<=n;i++) p[i]={W[i-1],A[i-1]-B[i-1]},all+=A[i-1];
	sort(p+1,p+n+1,cmp);
	for(int j=1;j<=q;j++)
	{
		long long d=E[j-1];
		for(int i=1;i<=n;i++)
		{
			dp[i]=dp[i-1];
			if(i>=2&&p[i].w-p[i-1].w<=d) dp[i]=max(dp[i],dp[i-2]+p[i].c+p[i-1].c);
			if(i>=3&&p[i].w-p[i-2].w<=d) dp[i]=max(dp[i],dp[i-3]+p[i].c+p[i-2].c);
		}
		R.push_back(all-dp[n]);
	}
	return R;
}

2024/9/14 10:06
加载中...