随笔分类 -  【图论·树】树形dp

摘要:题意:给出一颗二叉树,顶点颜色要么为黑要么为白,现在想要所有点颜色相同。可以进行两种操作: 1.选择两个顶点,将他们之间的最短路上的顶点颜色翻转,包括这两个顶点 2.选择一棵子树,翻转子树内顶点的颜色。 一次操作会花费1的代价,问最少的代价可以让所有点颜色相同 题解:【下面的描述可能看起来字很多,但 阅读全文
posted @ 2020-09-02 17:34 JWizard 阅读(216) 评论(0) 推荐(0)
摘要:题意:给出一棵树,f(a,b)表示不在a,b路径上的最小点的编号。q组询问,每次给出u,v,询问f(u,v) 题解:显然如果两个点的lca不是1,那么答案就是1。可以把1号节点当作根做一次dfs,然后去掉这个点,形成了一片森林。在森林中,预处理出$mn_id[i]$表示i子树内最小点的编号:\(mn 阅读全文
posted @ 2020-08-24 21:05 JWizard 阅读(117) 评论(0) 推荐(0)
摘要:一开始想的状态是dp[i][0/1][0/1]表示i点被A还是被B走到,该点有没有折扣,其实第三维定义是冗余的,有折扣肯定比没折扣好。 由于A和B的路径中必须得有一个无折扣点,所以可以定义一下一个维度表示这个无折扣点在i的上面还是下面还是它本身。 每个节点为根的子树,有可能是: A从根的【上面】攻击 阅读全文
posted @ 2020-08-19 13:07 JWizard 阅读(102) 评论(0) 推荐(0)
摘要:思路和代码借鉴的是这位博主的[https://blog.csdn.net/tianyizhicheng/article/details/107792119] 本人在他的思路上重新梳理了一下,代码同样借鉴了他的 8.4 1007 Tree 题意:给一棵n顶点的有边权的树,给出一个数字k,你需要找到一个 阅读全文
posted @ 2020-08-05 16:54 JWizard 阅读(187) 评论(0) 推荐(0)