这样写树形背包的复杂度是 n^2 的吗(忽略 k
查看原帖
这样写树形背包的复杂度是 n^2 的吗(忽略 k
131591
蒟蒻君HJT泽渡透香楼主2023/2/10 10:09
void dfs(int x){
	siz[x] = 1;
	for(int i = 1; i <= k; ++i) dp[x][0][i] = 1;
	for(auto v : ver[x]){
		if(v == fa[x]) continue;
		fa[v] = x;
		dfs(v);
		for(int i = 0; i <= (siz[x] - 1) * k; ++i)
			for(int j = 0; j <= k; ++j)
				f[i][j] = dp[x][i][j], 
				dp[x][i][j] = 0;
		for(int i = 0; i <= (siz[x] - 1) * k; ++i)
			for(int j = 0; j <= k; ++j)
				if(f[i][j])
				for(int ii = 0; ii <= (siz[v] - 1) * k; ++ii)
					for(int jj = 0; jj <= k; ++jj){
						if(!dp[v][ii][jj]) continue;
						node t = merge(i, j, ii, jj);
						dp[x][t.a][t.b] = add(dp[x][t.a][t.b], mul(f[i][j], dp[v][ii][jj]));
					}
		siz[x] += siz[v];
	}
	return ;
}
2023/2/10 10:09
加载中...