随笔分类 -  动态规划—树形dp

摘要:是我想复杂了 首先发现大于关系构成了一棵二叉树的结构,于是树形dp 设f[i]为i点的方案数,si[i]为i点的子树大小,递推式是\\( f[i]=f[i\ 2]\ f[i\ 2+1]\ C_{si[i] 1}^{si[i\ 2]} \\) 组合数用Lucas求 cpp include includ 阅读全文
posted @ 2018-03-08 19:59 lokiii 阅读(148) 评论(0) 推荐(0)
摘要:~~这么简单的dp我怎么没想到x2~~ f为从这个点出发后回到这个点最多能走过的点,g为从这个点出发后不回到这个点最多能走过的点,注意g有两种转移:g[u][k]=max(g[u][k],f[u][k j 1]+g[e[i].to][j])是在e[i].to这个子树前走了一棵子树再回来,g[u][k 阅读全文
posted @ 2018-03-05 19:09 lokiii 阅读(136) 评论(0) 推荐(0)
摘要:其实挺简单的但是没想出来………… 首先判断无解情况,即,一开始的图就不是仙人掌,使用tarjan判断如果一个点dfs下去有超过一个点比他早,则说明存在非简单环。 然后考虑dp,显然原图中已经属于某个简单环的边就是没用的,tarjan缩点之后删掉两个端点在一个强连通分量中的边。(无向图的tarjan要 阅读全文
posted @ 2018-03-04 20:26 lokiii 阅读(243) 评论(0) 推荐(0)
摘要:我是在在做网络流最小路径覆盖的时候找到这道题的 然后发现是个贪心+树形dp \\( f[i] \\)表示在\\( i \\)为根的子树中最少有几条链,\\( v[i] \\) 表示在\\( i \\)为根的子树中\\( i \\) 是( 0)否(1)为一条链的端点 然后贪心转移即可(有链端点则连起来 阅读全文
posted @ 2018-01-03 21:54 lokiii 阅读(269) 评论(0) 推荐(0)