
本文共 3469 字,大约阅读时间需要 11 分钟。
���������
���������
���������
������������
������������������������������������ \(T\)������������������������������������������������������������������������ \(G\)��������������������������������������������������������������������������� \(G\) ������������������������������ \(T\) ��������������������������������� \(G\) ��������������������� \(h[i]\)��������� \(G\) ��������������������������������� \(ls,rs\)������������������ \(T\) ������������������������������������
��������������������������� \(1e9+7\) ���������
\(n\leq 5000,h_i\leq 10^9\)
������
������������ \(G\)������������������ \(dp\)������ \(f[i][j]\) ��������� \(i\) ��������� \(T\) ��� \(j\) ������������������������������������������������������������������������������������������������
��� \(g(i,j)=\sum_{k\geq j}f(i,k)2^k\)������ \(dp\) ������������������ \(f(i,j)=g(l,j+1)g(r,j+1)2^{-2j-2}\)��������������������� \(O(nh_i)\) ������
������������������������������������������������ \(dp\) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������\(g(i,j)\) ��������������� \(a_0+a_12^{-j}+a_22^{-2j}....+a_k2^{-kj}\) ������������������ \(j\) ������������������������������������������������������������ \(a\) ������������ \(i\) ������������������������������������ \(g(i,j)\) ������ \(j\) ������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������ \(b\) ��� \(g(l)\) ��� \(g(r)\) ��������������������������������� \(g\) ������������������������������������ \(s_i\) ��� \(g(i,j)\) ��������������������������� \(t\) ���������������������������
������������������������ \(j\)������ \(j\) ��������������������������������������������������������������� \(2^{-j(l+1)}\)��������������������������������������� \(l+1\) ������������������������������������������������������������������������������������ \(b\) ������������������������������������ \(lca\) ������ \(1\) ������������������������������������������������ \(O(n^2)\)
#include#include #include using namespace std;const int M = 5005;const int MOD = 1e9+7;#define int long longint read(){ int x=0,f=1;char c; while((c=getchar())<'0' || c>'9') {if(c=='-') f=-1;} while(c>='0' && c<='9') {x=(x<<3)+(x<<1)+(c^48);c=getchar();} return x*f;}int n,inv,ans,ls[M],rs[M],h[M],a[M][M],b[M],siz[M];int qkpow(int a,int b){ int r=1; while(b>0) { if(b&1) r=r*a%MOD; a=a*a%MOD; b>>=1; } return r;}void dfs(int u){ if(!ls[u]) { siz[u]=1; a[u][0]=qkpow(2,h[u]); return ; } dfs(ls[u]); dfs(rs[u]); h[u]=min(h[ls[u]],h[rs[u]])-1;//���j��������� if(h[u]<0) return ; siz[u]=siz[ls[u]]+siz[rs[u]]; memset(b,0,sizeof b); for(int i=0;i
������������
������������������������