云计算WA0pts🆘QAQ!!!

  1. 云计算
    题目ID:11067必做题100分
    最新提交:
    Wrong Answer
    0 分
    历史最高:
    Wrong Answer
    10 分

    时间限制: 3000ms
    空间限制: 524288kB

题目描述

题目描述

仅一行一个整数,表示能够获得的最大总利润。

样例输入

4
4 2200 700
2 1800 10
20 2550 9999
4 2000 750
3
1 1500 300
6 1900 1500
3 2400 4550

样例输出

350

样例解释

数据范围

对于20%的数据,n≤ 15n≤ 15;

对于另外20%的数据,m≤ 15m≤ 15;

对于另外20%的数据,n,m≤ 100,ci=Cj=1n,m≤ 100,ci​=Cj​=1;

对于另外10%的数据,fi=Fj=1fi​=Fj​=1;

对于另外10%的数据,vi=Vj=1vi​=Vj​=1;

对于100%的数据,1≤n≤2×103, 1≤ci,Ci≤50, 1≤fi,Fi,vi,Vi≤1091≤n≤2×103, 1≤ci​,Ci​≤50, 1≤fi​,Fi​,vi​,Vi​≤109
图片

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct computer{
	int c,f,v;
}a[4005];
int ct;
int tp;
bool cmp(computer x,computer y){
	if(x.f!=y.f){
		return x.f>y.f;
	}
	return x.v<y.v;
}
int dp[200005];

int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].c>>a[i].f>>a[i].v;
		a[i].v=-(a[i].v);
		tp+=a[i].c;
	}
	cin>>m;
	for(int i=n+1;i<=n+m;i++){
		cin>>a[i].c>>a[i].f>>a[i].v;
		tp+=a[i].c;
	}
	memset(dp,-(0x3f3f3f),sizeof(dp));
	sort(a+1,a+1+n+m,cmp);
	for(int i=1;i<=n+m;i++){
		if(a[i].v<0){//卖 
			for(int j=ct;j>=0;j--){
				dp[j+a[i].c]=max(dp[j+a[i].c],dp[j]+a[i].v);
				//cout<<"dp["<<j<<"]:"<<dp[j]<<" ";
			}
			//cout<<endl;
			ct+=a[i].c;
		}
		else{//买
			for(int j=0;j<=ct-a[i].c;j++){
				dp[j]=max(dp[j],dp[j+a[i].c]+a[i].v);
				//cout<<"dp["<<j<<"]:"<<dp[j]<<" ";
			}
			//cout<<endl;
		}
	}
	/*
	for(int i=1;i<=ct;i++){
		cout<<dp[i]<<" ";
	}
	*/
	int maxx=-1;
	for(int i=0;i<=ct;i++){
		maxx=max(maxx,dp[i]);
		//cout<<dp[i]<<" ";
	}
	cout<<maxx;
	return 0;
}
/*

*/

开long long dp数组

根本过不了好吧

这题明显是因为他善所以才过不了doge

@杨思越 不是说了吗发问题讨论区…

你的tp是干啥的

开long long ans初值赋为-1e18

当前代码:
WA0pts

#include<bits/stdc++.h>
using namespace std;
long long n,m;
struct computer{
	long long c,f,v;
}a[4005];
long long ct;
long long tp;
bool cmp(computer x,computer y){
	if(x.f!=y.f){
		return x.f>y.f;
	}
	return x.v<y.v;
}
long long dp[200005];

int main(){
	cin>>n;
	for(long long i=1;i<=n;i++){
		cin>>a[i].c>>a[i].f>>a[i].v;
		a[i].v=-(a[i].v);
		tp+=a[i].c;
	}
	cin>>m;
	for(long long i=n+1;i<=n+m;i++){
		cin>>a[i].c>>a[i].f>>a[i].v;
		tp+=a[i].c;
	}
	memset(dp,-(0x3f3f3f),sizeof(dp));
	sort(a+1,a+1+n+m,cmp);
	for(long long i=1;i<=n+m;i++){
		if(a[i].v<0){//卖 
			for(long long j=ct;j>=0;j--){
				dp[j+a[i].c]=max(dp[j+a[i].c],dp[j]+a[i].v);
				//cout<<"dp["<<j<<"]:"<<dp[j]<<" ";
			}
			//cout<<endl;
			ct+=a[i].c;
		}
		else{//买
			for(long long j=0;j<=ct-a[i].c;j++){
				dp[j]=max(dp[j],dp[j+a[i].c]+a[i].v);
				//cout<<"dp["<<j<<"]:"<<dp[j]<<" ";
			}
			//cout<<endl;
		}
	}
	/*
	for(int i=1;i<=ct;i++){
		cout<<dp[i]<<" ";
	}
	*/
	long long maxx=-1e18;
	for(long long i=0;i<=ct;i++){
		maxx=max(maxx,dp[i]);
		//cout<<dp[i]<<" ";
	}
	cout<<maxx;
	return 0;
}
/*

*/

咱俩根本不一样

边界值单独初始化