CF1466H 题解-一类带权 DAG 的计数问题
简化题意可以得到这是一个 DAG 计数类的问题,直接的 DAG 计数是简单的,对于本题,区别在于对于每个 DAG 具有一个权值,为 \(\prod f(v)\),其中 \(f(v)\) 只与每个点的出度和之前的点数有关(即与在 \(a_i\) 之前的边有关)。
枚举入度为 0 的子集后对于加入的 \(T\),\(T\) 中的点只可能指向 \(S - T\),此时对于每个 \(v\in T\),可以单独确定它的出度且不会因为后面的改变,所以可以考虑枚举它的出度,就变成 DAG 计数问题了。
换句话说,如果 \(f(v)\) 换成其他的函数也是可以做的,只不过要满足上文的性质。
本题 \(n\) 可以做到 \(40\) 甚至更大的原因是本题本质不同的点只有 \(O(\sqrt m)\) 甚至更少个。
换句话说,如果是普通的 DAG 计数,本质不同的点少的话应该也可以做到比子集卷积 \(O(n^2 2^n)\) 或暴力卷积 \(O(3^n)\) 更优的神秘复杂度。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号