bzoj 5293 树上差分 and 倍增
题意:问你树上两点之间路径上 sigma(每个点深度^k); 解: 1、树上倍增时维护每个深度k次幂到根的前缀和 2、树上差分+简单容斥 #include < bits / stdc ++. h > using namespace std ; #define MAXN 300010 #define maxn 300010 #define en '\n' #define ll long long int MAXLOG ; const int mo = 998244353 ; const int INF = 1e8 ; const int inf = 1e8 ; int T , tot = 1 ; int dep [ maxn ], anc [ maxn ][ 66 ], n , m ; int val [ 66 ]; int a [ maxn ][ 66 ]; template < class T > void rep ( T & x ){ x %= mo ; x += mo ; x %= mo ;} template < class T > void rd ( T & x ) { x = 0 ; int f = 0 ; char ch = getchar (); while ( ch < '0' || ch > '9' ) { f |=( ch == '-' ); ch =