随笔分类 -  题解-树形DP

摘要:【洛谷传送门】 借鉴了 \(\mathtt{wind\_whisper}\) 的思路,他的【博客传送门】(不过我的代码写的比他好看多了) 题解 先不提及优化,一开始本人并没有设计出朴素 DP。(或许有些浮躁?) 设计 DP 看到数据范围还有题目里面玄学的对应关系,可以想到状压,用一维表示已被对应的节 阅读全文
posted @ 2021-10-30 13:49 conprour 阅读(61) 评论(0) 推荐(0)
摘要:传送门 前言 对于换根的理解应该和其他题解不一样,求过。 题解 首先分析题目简化题意:给定一棵树,从里面选出若干个“三连点”的边,使边权和最大。其中“三连边”有如下图两种形态:\(3-1-2\) 和 \(3-5-6\) (图源:tommymio) 一开始我想到一种 DP:\(dp(u,0/1/2)\ 阅读全文
posted @ 2021-10-27 22:52 conprour 阅读(150) 评论(0) 推荐(1)
摘要:传送门 题解 一开始想的是先求出 \(1,n\) 的单源最短路,之后枚举中转点把两段拼起来,几乎写完了之后才发现我这个想法根本就不对。(因为没办法简单地把两段路径拼在一起)重构了,用时巨长。 其实,按照上面的思路继续,应该也不难想出正解。 变换一下视角,把 \(1 - n\) 的路径单独提出来,以后 阅读全文
posted @ 2021-10-26 22:56 conprour 阅读(44) 评论(0) 推荐(0)
摘要:大部分人的树形背包板子应该是写成下面这样的: for(int i = head[u]; i; i = nxt[i]) { if(to[i] == fa)continue; dfs(to[i], u); sz[u] += sz[to[i]]; for(int j = sz[u]; j >= 0; j- 阅读全文
posted @ 2021-10-21 16:49 conprour 阅读(286) 评论(0) 推荐(0)
摘要:#题意 #题解 这在洛谷上是一道紫题...不枉我费了半个上午 首先可以想到,一个环里的点,要选择的话一定一起选,所以先想到缩点形成一个DAG 考虑如何建边,注意到题目关键:一个软件最多依赖另外一个软件,那么从被依赖想依赖建边,形成的还是一棵树 问题就转化成了:在一个树上每个点都有重量和价值,你有一个 阅读全文
posted @ 2021-09-09 08:14 conprour 阅读(41) 评论(0) 推荐(0)