随笔分类 -  动态规划-背包dp

摘要:问题:有一课含有n(n<=2e5)个结点的数,有m(m<=1000)个结点是红色的,其余的结点是黑色的。现从树中选若干数量的结点,其中红色的恰有k个,并且每个结点都不是其他任何另一个结点的后代,分别求出k=0,1,2,...,m的选法种数。(树根为1) 又是一道树形背包问题。只不过这个问题和普通的树 阅读全文
posted @ 2019-03-14 16:30 jrltx 阅读(271) 评论(0) 推荐(0)
摘要:题目链接 问题:有n个人,最多选k个,如果选了某个人就必须选他指定的另一个人,问最多能选多少个人。 将每个人所指定的人向他连一条单向边,则每一个点都有唯一的前驱,形成的图是个基环树森林,在同一个强连通分量里的点要么全选,要么全不选。 首先用Tarjan算法将每个强连通分量(基环树上的环)缩成一个点, 阅读全文
posted @ 2019-03-14 11:20 jrltx 阅读(245) 评论(0) 推荐(0)
摘要:题意:有一棵树,树上每个结点都有一个权值,求恰好包含k个结点的子树的最大权值。 设dp[i][j]为以结点i为根的树中包含j个结点的子树的最大权值,则可以把这个结点下的每棵子树中所包含的所有子树的大小当做物品的重量,对应的最大权值当做物品的价值,则相当于在它的每颗子树的所有物品中任选一个进行更新,对 阅读全文
posted @ 2019-03-13 20:37 jrltx 阅读(282) 评论(0) 推荐(0)
摘要:题目链接 题目大意:有S门课程,N名在职教师和M名求职者,每名在职教师或求职者都有自己能教的课程集合以及工资,要求花费尽量少的钱选择一些人,使得每门课程都有至少两人教。在职教师必须选。 可以把“每个课程已经分别有几个人教”作为状态来进行转移,每个人能教的课程集合作为“物品重量”,工资作为“价值”来更 阅读全文
posted @ 2019-02-14 21:52 jrltx 阅读(202) 评论(0) 推荐(0)