zoukankan      html  css  js  c++  java
  • UOJ185 ZJOI2016 小星星 容斥、树形DP

    传送门


    先考虑一个暴力的DP:设(f_{i,j,S})表示点(i)映射到了图中的点(j),且点(i)所在子树的所有点映射到了图中的集合(S)时的映射方案数,转移暴力地枚举子集即可,复杂度(O(n^33^n))显然跑不过。

    那么我们注意一下复杂度的瓶颈到底出现在了哪里,不难发现出现在了“树上的每一个点映射到的图上的点不能相同”这一个限制。如果没有这一个限制,不难发现一个(O(n^3))的DP:设(f_{i,j})表示点(i)映射到了图中的点(j)时的方案数,转移枚举儿子映射到的点考虑这两个点是否连边。

    如果直接这样做显然会算重一些东西,也就是某一些点可能会映射到相同的点。我们是否可以通过某些方式减掉这个方案数?那么就不难想到容斥了。我们对于点集全集的每一个子集(T),每一次跑一边树形DP计算当树上的每一个点都只能映射到(T)点集中的点时的方案数,容斥系数是((-1)^{N - |T|})。这样我们以(O(2^nn^3))的复杂度完成了此题,虽然复杂度很不对但是就是能过……

    代码

  • 相关阅读:
    linux grep命令
    PHP 利用simplexml_load_file 读取XML对应的字段 然后存入mysql数据库
    php 设计模式之单类模式
    Mac C#开发工具Rider安利与环境配置教程
    模拟,贪心,枚举(二)
    模拟,贪心,枚举
    10.10 review
    review 10.9
    10.6 review
    9.28 review
  • 原文地址:https://www.cnblogs.com/Itst/p/11054366.html
Copyright © 2011-2022 走看看