• 基础树形DP小结


    HDU 4044 Geodefense

    http://blog.csdn.net/zmx354/article/details/25109897

    树形DP暂且先告一段落了。


    HDU 3586 Information Disturbing

    dp[ s ][ k ]表示在s节点处。上限为k时的最小花费。

    dp[ s ][ k ] += min(dp[son][ j ]) j∈[1,k]。

    直接枚举则 时间复杂度为 n*m*m。

    可是对于 min(dp[son][ j ]) j∈[1,k],能够递推获得,即 Min[son][i] = min(dp[son][i],Min[son][i-1])。则时间复杂度降为n*m。

    目測后台数据不少。


    HDU 4003 Find Matal Mineral

    http://blog.csdn.net/zmx354/article/details/24937405


    POJ 2468 Apple Tree

    http://blog.csdn.net/zmx354/article/details/25026467


    HDU 1561 The more ,The better

    非常直观的树上背包瞎搞。

    http://blog.csdn.net/zmx354/article/details/24786969


    CodeFoeces 219D

    首先统计出根节点要翻转的边(棵如果任一点为根节点,不影响答案)。

    ans[root] = sigma (ans[son i ] + w)。

    若son i 与root相连边相对于根节点需翻转则 w == 1,否则 w == 0。

    对于子节点 。有 ans[son] = ans[root] + w。若son 与 root相连边相对于子节点需翻转则 w == 1。否则 w == -1。


    POJ 3162 Walking Race

    自从爱上对拍数据。Debug的能力愈发弱了。

    得改。

    HDU 2196的加强版。多了区间最值查询。感觉更像是在考数据结构。。

    。。


    POJ 1947 Rebuilding Roads

    给出一个有 n 个顶点的树。问最少删除多少条边能够使得到一棵仅仅有 m 个顶点的树。

    dp[ s ][ i ] 表示已 s 为根节点的子树删除 最少删除dp[s][i]条边得到一棵有 i 个顶点的树。

    dp[s][ i ] = min(dp[s][ i ],dp[s][k] + dp[son][i-k])。

    循环按01背包的方式写。

    然后枚举根节点。


    HDU 1011 Starship Troopers

    好蛋疼的题意,简直就是在欺负我们这些没过四级的选手。

    题意 从 1 開始往下走,如要抓获子节点的brain。则必先攻占父节点。

    攻占的条件为损耗 k 个Trooper,有 20*k >= bug。

    坑点在于当此处的bug == 0时,也要派一个人过去拿。但无需停留。

    让我想起了去年网络赛炸桥的那个题。

    状态转移方程为 dp[s][i] = max(dp[s][i],dp[s][i-k]+dp[son][k])。

    特例。k == 0时,dp[s][i] = max(dp[s][i],dp[s][i-1]+dp[son][0])。


    POJ  1155 TELE

    比較直观的 0 1背包了。

    dp[ i ][ j ] 记录第 i 个结点有 j 个观众时的最大值,然后没计算完一棵子树,按0 1背包的方式更新根节点。


    POJ 1741 Tree

    我大楼教主的男人八题之五。


    树形DP + 归并排序。

    思路还算比較明白,实现略蛋疼。

    统计出每课子树上的合法路径的权值和,升序排列。

    跨过根节点的枚举当中一个子树上的,然后二分还有一棵子树上的。然后合并。继续枚举其它子树。

    链表形式的TLE了一次。改成静态,有一个地方手慘了,例子一直过的跟孙子一样。对拍了一下午的数据才找出错。

    。。。


    HDU 1520  Anniversary party

    隔层选取,比較基础的树形DP了。

    HDU 2196 Computer

    我仅仅想说一句这是毛线DP,明明是图论好么。

    两次BFS求出权值和最大的一条链,再用两次BFS更新各点最大值。

    搜了一下。真的有人用DP做。貌似更快一些。


  • 相关阅读:
    Java泛型
    pyhthon 求GPA平均学分绩点
    机器学习 数据预处理之独热编码(One-Hot Encoding)
    python 取整itertools
    python 输入输出
    jQuery插件开发模式
    shiro 与 web 的结合
    java.lang.NoClassDefFoundError: javax/transaction/UserTransaction
    使用quartz 定时任务
    EasyIcon:免费图标搜索和下载平台
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7088068.html
Copyright © 2020-2023  润新知