RT,就是和子树 size 有关的
比如这份:
void dfs1(int u, int pre)
{
size[u] = 1;
f[u][0] = f[u][1] = g[u][0] = g[u][1] = 0;
for(int i = first[u]; i; i = Next[i])
{
int v = to[i];
if(v == pre)
{
continue;
}
dfs1(v, u);
size[u] += size[v];
memcpy(tmpf, f[u], sizeof(tmpf)), memcpy(tmpg, g[u], sizeof(tmpg));
for(int V = 1; V <= min(size[u], step); V++)
{
for(int k = min(size[v], V); k >= V + size[v] - size[u]; k--)
{
f[u][V] = min(f[u][V], min(f[v][k] + tmpg[V - k] + w[i], tmpf[V - k] + g[v][k] + 2 * w[i]));
g[u][V] = min(g[u][V], g[v][k] + tmpg[V - k] + 2 * w[i]);
}
}
}
memcpy(memf[u], f[u], sizeof(memf[u])), memcpy(memg[u], g[u], sizeof(memg[u]));
return;
}
如果这份代码一次转移的复杂度是 O(sizeu2),那么在树上转移的总的复杂度是?
或者说这份代码的实际复杂度是(可能上面的假设是错的)?