树形背包90tle
查看原帖
树形背包90tle
1048327
KANO07楼主2024/2/22 21:20

不开02, #9 tle,请问哪里可以优化?

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
vector<int>edge[65];
int cost[65], val[65];
int dp[65][40005];
int m,n;

void dfs(int u){
	for(int v : edge[u]){
		dfs(v);
		for(int j = n; j >= 0; j--){ //父树内存 
			for(int k = j; k >= cost[v]; k--){ //子树内存 
				dp[u][j] = max(dp[u][j], dp[u][j-k] + dp[v][k - cost[v]] + val[v]); 
			}
		}
	} 
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin>>n>>m;
	n /= 10;
	for(int i = 0; i <= m; i++) edge[i].clear(); 
	for(int i = 1; i <= m; i++){
		int c,v,k;
		cin>>c>>v>>k;
		cost[i] = c/10;
		val[i] = v*c;
		edge[k].emplace_back(i);
	}
	dfs(0);
	cout<<dp[0][n]<<endl;
	return 0;
}
2024/2/22 21:20
加载中...