优化建图相关技术
前缀优化建图
适用形式:
-
从\(x\)向\([1,i]\)连边。
-
从\(x\)向\([i,n]\)连边。
-
从\([1,x]\)向\([y,n]\)连边。
考虑建\(n\)个虚点\(s_i\)和\(n\)个虚点\(p_i\)。\(s_i\)代表\([1,i]\)的前缀,\(p_i\)代表\([i,n]\)的后缀。
我们连边\(i\to s_i\),\(s_i\to s_{i+1}\),\(p_i\to i\),\(p_i\to p_{i+1}\)。
对于操作\(1\),\(s_i\to x\)。
对于操作\(2\),\(x\to p_i\)。
对于操作\(3\),\(s_x\to p_y\)。
对于树上对一端为根的链连边,直接建内向树,然后连就好了。
线段树优化建图
适用形式:
-
从\(x\)向\([l,r]\)连边。
-
从\([l,r]\)向\(x\)连边。
-
从\([l_1,r_1]\)向\([l_2,r_2]\)连边。
建两棵线段树。一棵父亲向儿子连边,叶子向对应节点连边。另一棵儿子向父亲连边,对应节点向叶子节点连边。不妨分别称为内向树和外向树。
对于操作\(1\),从\(x\)向外向树上的对应\(\log n\)个点连边。
对于操作\(2\),从内向树上的对应\(\log n\)个点向\(x\)连边。
对于操作\(3\),新建一个虚点\(p\),从\([l_1,r_1]\)向\(p\)连边,\(p\)向\([l_2,r_2]\)连边,这样与原问题是等价的。