Bubble Cup 8 finals B. Bribes (575B)
题意:
给定一棵n个点和有向边构成的树,其中一些边是合法边,一些边是非法边,
经过非法边需要1的费用,并且经过之后费用翻倍。
给定一个长为m的序列,问从点1开始按顺序移动到序列中对应点的总费用。
1<=n<=10^5,
1<=m<=10^6
题解:
还是比较水的…
正解是各种方法求LCA,在点上打标记,最后DFS一遍就可以得到答案。
用tarjan求LCA可以做到总复杂度O(n*α)…
我傻傻地见树就剖,强行O(n log n log n)碾过去了…
每次把起点终点之间的路径的经过次数加一,最后统计非法边对应的点,
对答案的贡献是 2^(次数)-1 。
ZKW线段树的常数还是比较可以接受的…虽然Codeforces机子本来就快…
补上O(n*α)的做法:
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号