蒟蒻求助树形DP
查看原帖
蒟蒻求助树形DP
482082
Mortis_Vampire楼主2021/12/29 23:32

调了很久了,不知道哪里错了。

40分,样例输出0。

#include <iostream>
#include <cstdio>
using namespace std;
int n,t,w,f[1005][1005],cnt,v[1005],c[1005];
void read(int u) {
	scanf("%d%d",&t,&w);
	t<<=1;
	if(w){
		for(int i=1;i<=w;i++)
		scanf("%d%d",&c[i],&v[i]);
		for(int i=1;i<=w;i++)
			for(int j=n;j>=v[i];j--)
			if(j-v[i]>=t)
			f[u][j]=max(f[u][j],f[u][j-v[i]]+c[i]);
		return;
	}
	read(u<<1);
	read(u<<1|1);
	for(int i=t;i<=n;i++)
		for(int j=0;j<=i-t;j++)
		f[u][i]=max(f[u][i],f[u<<1][j]+f[u<<1|1][i-t-j]);
}
int main() {
	scanf("%d",&n);
	n--;
	read(1);
	printf("%d",f[1][n]);
	return 0;
}
2021/12/29 23:32
加载中...