• 2024-05-08cf396c-ti-jie
    CF396C思路对于一个点维护$b_i=a_i-a_{fa_i}$。对于操作一,等价于$b_u$加$x$,$u$的子树不含$u$的每个点和父亲的差都减$k$。对于操作二,等价于从根到$u$路径上的$b_x$的和。同P3178,子树加,路径查,树剖加线段树。codeintn,q;inthead[maxn],tot;structnd{ intnxt
  • 2024-02-17CF396C On Changing Tree
    看到距离有关可以联想到跟深度有关系,可以用深度表示距离关系。假设现在有一操作1vxk,那么对于v下一点u,设dep[v]为v的深度,那么两点间距离就是dep[u]-dep[v],于是u点就会增加\(x-k*(dep[u]-dep[v])=x-k*dep[u]+k*dep[v]\)。由此来看,只需要把v一下的\(sum1\)都加上\(x-dep[u]\),
  • 2023-12-27CF396C On Changing Tree 题解
    CF396C考虑将贡献表示出来:\(\forallv\in\text{subtree}_u\),\(v\)会加上\(x-(dep_v-dep_u)k\),然后发现这个东西可以维护整棵子树,即把\(x,dep_u\timesk\)和\(dep_v\timesk\)分开计算,然后\(dep_v\)可以最后再管,就变为子树加,单点和了。用树状数组维护dfs序即可。