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))的复杂度完成了此题,虽然复杂度很不对但是就是能过……

    代码

  • 相关阅读:
    数据库生成说明
    Android 的 SurfaceView 双缓冲应用
    一些and知识 和ui
    weibo11
    android总结
    weibo14
    weibo9
    weibo12
    weibo10
    在线人数的统计
  • 原文地址:https://www.cnblogs.com/Itst/p/11054366.html
Copyright © 2011-2022 走看看