zoukankan      html  css  js  c++  java
  • 【P2015】二叉苹果树(树状DP)

    蒟蒻弱弱的开始做树形DP了,虽然做了这道题还是有很多不懂得地方。

    这道题大意就是有一棵树,只保留其中q条边,求出剩余边的最大权值。

    然后开始考虑怎么做(其实是看着题解出思路。。。。),很容易可以想出DP数组应该代表什么含义。用f[i][j]表示第i个子节点保留下面j-1条边能达到的最大苹果数量。

    为什么是j-1?因为如果选了i,那么就必须选上它上面那条来保证能够连到根上。

    然后转移方程就有些想不到,题解是这样的:f[from][j]=max(f[from][j],f[v][k]+f[from][j-k]);

    看了一会,明白了,实际上也好理解,跟一般的DP差的不是很多。

    其中还有一个if判断,if((k!=j&&j!=1)||from==1),这个照题解说是要对节点1进行特判。只有1号节点不存在在它上方的边。所以1号节点可以无视前面k!=j&&j!=1的条件。
    代码如下了:

    对于作者转载文章,欢迎继续转载。 对于作者原创文章,请注明出处之后转载。
  • 相关阅读:
    quick-cocos2dx 3.5集成protobuf
    lua和luajit在cocos2dx mac模拟器的简单测试
    cocos2dx-lua手游客户端框架设计
    cocos2dx动画技术选型
    lua中的面向对象
    html 学习
    OC 与js 互相调用
    Carthage的安装和使用
    Bomb后端云使用
    FMDB简单使用
  • 原文地址:https://www.cnblogs.com/victorique/p/8426727.html
Copyright © 2011-2022 走看看