DP70TLE,吸氧才能过,求优化
查看原帖
DP70TLE,吸氧才能过,求优化
432183
JoeBiden2020楼主2021/8/20 23:15
#include <bits/stdc++.h>
using namespace std;
int n,T,temp,V[1005],f[10005],a[105][105];
void solve(int day1, int day2) {
	memset(f,0,sizeof(int)*(V[day1]+1));
	for(int i=1;i<=n;i++) {
		int c=a[day1][i],w=a[day2][i];
		for(int j=c;j<=V[day1];j++) {
			f[j]=max(f[j],f[j-c]+w);
		}//每次求解一次完全背包 
	}
	int tmp=0;
	for (int i=0;i<=V[day1];i++){
		tmp=max(tmp,f[i]+V[day1]-i);
	}
	V[day2]=max(V[day2],tmp);
}
int main(){ 
	cin>>T>>n>>V[0];
	for(int i=1;i<=T;i++) {
		for(int j=1;j<=n;j++) {
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=T;i++) {
		V[i]=max(V[i],V[i-1]);
		for(int j=i+1;j<=T;j++) {//O(n^2) 枚举每一天 
			solve(i,j);
		}
	}
	cout<<V[T];
	return 0;
}
2021/8/20 23:15
加载中...