关于 树形dp 的复杂度分析
  • 板块学术版
  • 楼主__Watcher
  • 当前回复15
  • 已保存回复15
  • 发布时间2020/8/28 14:28
  • 上次更新2023/11/5 14:07:22
查看原帖
关于 树形dp 的复杂度分析
93041
__Watcher楼主2020/8/28 14:28

RT,运行如下代码:

int dfs(int u, int fa) {
	int now=1;
	f[u][0]=f[u][1]=0;
	for(int k=h[u];k;k=d[k].n) {
		int v=d[k].b, c=d[k].c;
		if(v==fa) continue;
		int tmp=dfs(v, u);
		for(int i=min(now+tmp,m);i>=2;i--) {
			for(int j=min(now,i);j>=1;j--) {
				cnt++;
				f[u][i]=min(f[u][i], f[u][j]+f[v][i-j]+c*(i-j)*(m-i+j));
			}
		}
		now+=tmp;
	}
	return now;
}

其中 n1500n\le1500m1000m\le1000,运行完成后 cntcnt 的值为 4531303045313030。树形 dp 的复杂度不是 O(nm)O(nm) 的吗?求大神指点。

2020/8/28 14:28
加载中...